修改Adapter实现GridView列表中的增加按钮
2015-02-14 14:47
337 查看
如下是常见的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数据本身:
蓝色指向上一级目录。
第一个思路,是在数据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数据本身:
蓝色指向上一级目录。
相关文章推荐
- GridView连接SQL Server 2005实现增加、更新、删除按钮时遇到的两个错误及解决办法
- GridView中自定义单选按钮列的实现!(修改)
- asp.net 中利用GridView实现增加,修改,删除
- 关于ListView中的Adapter说明以及列表增加最后一项(更多选项)的实现
- gridview 绑定数据源 SqlDataSource 实现增加修改删除功能
- AcceptChanges()位置颠倒影起,DataGridView与SqlDataAdapter实现增加,修改,删除不成功
- GridView 增加、删除、修改 数据(绝对好用)
- JQuery扩展Gridview实现像QMail列表那样的展开效果
- 修改或增加用户地址后,刷新地址列表
- js获取下拉列表选中项的值和文本(select)以及获取单选按钮(radio)组的值和修改选中项[转]
- csdn 在c++ builder中,使用treeview实现对xml文档增加删除修改和查询等基本操作
- js获取下拉列表选中项的值和文本(select)以及获取单选按钮(radio)组的值和修改选中项[转]
- js获取下拉列表选中项的值和文本(select)以及获取单选按钮(radio)组的值和修改选中项[转]
- 如何实现对XML文件的增加、删除和修改操作
- 在后台 如何实现 按钮点击后 Table能动态增加一行
- 在后台 如何实现 按钮点击后 Table能动态增加一行
- DataList嵌套GridView实现文章分类列表显示
- Repeater实现GridView编辑修改模式
- 用户DataGrid实现增加,删除,修改及分页
- DataList嵌套GridView实现文章分类列表显示