修改Adapter实现GridView列表中的增加按钮

来源:互联网 发布:怎样网络金融理财 编辑:程序博客网 时间:2024/04/29 22:17
如下是常见的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数据本身:

蓝色指向上一级目录。
1 0
原创粉丝点击