1. 程式人生 > >Android 九宮格顯示多圖或 item

Android 九宮格顯示多圖或 item

gradle 依賴

    compile 'cn.lemon:multiview:0.1.8'

MultiView 基本使用:

由於依賴了RestHttp,所以初始化:

  RestHttp.initialize(this);
  if(BuildConfig.DEBUG){
       RestHttp.setDebug(true,"network");
  }

xml 佈局檔案

    <cn.lemon.multi.MultiView
        android:id="@+id/multi_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="#f1506d"
        app:divideSpace="8dp"
        app:placeholder="@drawable/holder"/>
  • 設定 item 之間的間隔app:divideSpace="8dp"
  • 設定佔位圖app:placeholder="@drawable/holder"

java 程式碼:

 multiView = (multiView) findViewById(R.id.cell_view);
 multiView.setLayoutParams(new LinearLayout.LayoutParams(900, ViewGroup.LayoutParams.WRAP_CONTENT));

 data.add("http://i02.pictn.sogoucdn.com/73a90748d5e19769");
 data.add("http://i01.pictn.sogoucdn.com/e19188bbc3966d6f");
 data.add("http://i02.pictn.sogoucdn.com/85db79c962886004");
 data.add("http://i01.pictn.sogoucdn.com/f44c1591194be8b9");

 multiView.setImages(data);   設定圖片資源

如果你不只是顯示圖片,需要自定義 item 的情況,這個時候就需要新增一個自定義 Adapter 繼承 Adapter:

    class MyAdapter extends Adapter<String> {

        private TextView textView;
        public MyAdapter(Context context) {
            super(context);
        }

        @Override
        public View getView(ViewGroup parent, int position) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false);
            textView = (TextView) view.findViewById(R.id.text);
            return view;
        }

        @Override
        public void setData(String object) {
            super.setData(object);
            //view 繫結資料
            textView.setText(object);
        }

        @Override
        public void setOnItemClick() {
            super.setOnItemClick();
            //item 點選事件
        }
    }

設定 Adapter,新增資料就好了

   adapter = new MyAdapter(this);
   multiView.setAdapter(adapter);
   adapter.addAll(data);

ViewImageActivity 基本使用:

在 manifests 檔案中新增

   <activity android:name="cn.lemon.multi.ui.ViewImageActivity"/>

不管是否使用 MultiView,其實都可以使用 ViewImageActivity,只需要在跳轉 Activity 的時候繫結好資料,如:

   intent.putExtra(LookImageActivity.IMAGES_DATA_LIST, (Serializable) picUrlData);   //這裡的資料集合必須是 List<Stirng>
   intent.putExtra(LookImageActivity.IMAGE_NUM, data.indexOf(object));

主要還是使用在載入多張圖片的時候和 MultiView 聯合使用。

注意事項

依賴的其他庫

   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:support-v4:23.1.1'
   compile 'cn.alien95:resthttp:1.0.5'

顯示圖片