修改Adapter實現GridView列表中的增加按鈕

如下是常見的GridView,紅色是顯示的圖片,綠色加號是增加圖片的按鈕,如何實現這樣的效果?

第一個思路,是在數據list最後位置增加一個加號圖片數據,但這樣改動原始list數據的方法顯然不好,牽扯很多。
第二個思路,是在Adapter裏面的數據list最後一個位置增加加號圖片數據,但是,爲了顯示一個按鈕而變動正常數據list總是不妥的。再有一點,Adapter中數據list的頭指針是自己的,list裏面的items數據項可能和外面的list共享的,也即可能是同一體。可能是這樣,這點我沒細看。
第三個思路是我推薦的,其方法是在Adapter比對View和數據item時偷偷插入一環,

public class RvAdapterCollectPic extends Adapter<RvAdapterCollectPic.ViewHolder> {
     List<LvRowFile> listItems;

     public RvAdapterCollectPic(List<LvRowFile> li) {
          this.listItems = li;
     }

     @Override
     public int getItemCount() {
          return listItems.size() + 1; //偷偷爲GridView增加一個子View位置
     }

     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {

          if (position == listItems.size()) { //在最後位置增加一個加號圖片
               holder.file_icon.setImageDrawable(here is a add pic));
               holder.file_icon.setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v) {

                    }
                    
               });
               return;
          }

          holder.file_icon.setImageDrawable(listItems.get(position)); // 平時就是普通的list數據
          holder.file_icon.setOnClickListener(new OnClickListener() {

               @Override
               public void onClick(View v) {

               }
          });
     }

}

類似地,可以讓getItemCount()返回“listItems.size() + 2”來實現如下效果而不改變list數據本身:

藍色指向上一級目錄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章