关于在Android中如何点击GridView或者ListView中item子项达到修改子项背景的问题解决方案
来源:互联网 发布:淘宝云客服质检扣分 编辑:程序博客网 时间:2024/06/06 20:12
曾经在项目中遇到过类似的问题。需要修改item子项的背景,达到互斥效果。
首先,写出自己的适配器。Adapter
这里以GridView为目标
1.适配器,每个人的适配器不尽相同,此为我自己写的。
关键代码。
为:
此处就是处理更换背景的代码。在Adapter中的getView方法中可以找到
if( getSelectIndex() == position ){
viewHolder.item_imageView.setVisibility(View.VISIBLE);
}else{
viewHolder.item_imageView.setVisibility(View.GONE);
}
********************************************************************************************
public class FamousteacherAdapterextends BaseAdapter {
private ArrayList<HashMap<String, Object>>dataList;
private Context context;
private LayoutInflater lf;
private ViewHolder viewHolder = null;
privateintselectIndex = -1;
public int getSelectIndex() {
returnselectIndex;
}
public void setSelectIndex(int selectIndex) {
this.selectIndex = selectIndex;
}
public FamousteacherAdapter(Context context,
ArrayList<HashMap<String, Object>> dataList) {
this.context = context;
this.dataList = dataList;
lf = LayoutInflater.from(context);
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int arg0) {
return dataList.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(finalint position, View convertView, ViewGroup parent) {
if (null == convertView) {
viewHolder =new ViewHolder();
convertView = lf.inflate(R.layout.settingtopic_list, null);
viewHolder.item_textview = (TextView) convertView
.findViewById(R.id.item_textview);
viewHolder.item_imageView = (ImageView) convertView
.findViewById(R.id.item_imageView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if( getSelectIndex() == position ){
viewHolder.item_imageView.setVisibility(View.VISIBLE);
}else{
viewHolder.item_imageView.setVisibility(View.GONE);
}
Map map = dataList.get(position);
viewHolder.item_textview.setText( (CharSequence) map.get("itemText"));
return convertView;
}
class ViewHolder {
TextView item_textview;
ImageView item_imageView;
}
}
2.第二步,在你的Activity中,你要实现点击事件。
在点击事件中将点击item的Position传回适配器中。然后通知适配器数据有变化。然后效果就达到了。
famous_course_gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
publicvoid onItemClick(AdapterView<?> arg0, View view,int arg2,
long arg3) {
if(famousteacherAdapter.getSelectIndex()==-1)
{
famousteacherAdapter.setSelectIndex(arg2);
}
else
{
famousteacherAdapter.setSelectIndex(arg2);
}
famousteacherAdapter.notifyDataSetInvalidated();//一定别忘了写这句。
}
});
- 关于在Android中如何点击GridView或者ListView中item子项达到修改子项背景的问题解决方案
- android中关于在ListView的子item中有控件抢占ListView的焦点问题
- Android中解决listview的item点击事件和子控件点击事件的冲突
- Android中ListView或者GridView的Item和Item中控件的事件冲突
- ListView中Item的子控件与Item点击事件冲的解决方式
- 解决ListView中Item的子控件与Item点击事件冲突
- 解决ListView中Item的子控件(比如Button)与Item点击事件冲突
- 解决ListView中Item的子控件与Item点击事件冲突
- (listview局部更新)在activity中获取listview的item子项view
- android关于Listview中定义了子控件,子控件和item同时获取焦点的问题
- 如何在ListView中设置item的点击事件
- Android--焦点问题-ListView中item及其子控件无法响应点击事件
- listview的item中有个checkbox,点击后会修改相应数据库数据,如何在listview中实时显示这个更新?
- Android ListView item中有按钮(Button)不能点击或者条目不能点击的问题
- 如何在MicroModels框架下获得gridview中被点击button所在的item项
- 在android中GridView如何在加载的时候自适应子控件元素的高度
- 在listView中点击其中的item。获得对应的ID或者别的信息
- ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决办法
- Fatal server error:Server is already active for display 0
- TabHost详解
- tomcat部署web项目的方法
- Linux下系统调用之exec函数族探索
- 东软睿道出席2013年国家示范性软件学院院长联席会会议
- 关于在Android中如何点击GridView或者ListView中item子项达到修改子项背景的问题解决方案
- JVM内存模型及垃圾收集策略解析
- 阻塞I/O(等待队列)
- 美好的时间总是太短暂
- 1145[校门外的树]
- CSS3 用户界面
- startActivityForResult 与launchmode有关
- python系列学习三 —— 数据处理
- Linux环境下安装LicenseManager