解决: 用代码改变listview的item背景色时,点击一个item,每隔几个item背景色重复
来源:互联网 发布:通达信编程 编辑:程序博客网 时间:2024/04/28 00:42
例如,用listview写列表的时候,点击第一个item的时候,第七个item的背景色也改变
要解决这个问题,只需要将前一个view作为tag,设定到viewGroup中即可,代码如下:
package com.example.twolistviewfragmentsdemo;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.R.color;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;public class MainActivity extends Activity { public static String FIRSTLIST_TITLE = "f_title"; public static String FIRSILIST_IMG = "f_img"; private String[] listviewtitle = new String[]{"法海你不懂爱", "王大锤", "父王", "怪兽甲+乙+丙", "纯娘子墨", "孔连顺车纳姆", "......", "尸哥", "锤锤" }; private int[] listviewimg = new int[]{R.drawable.icons_1, R.drawable.icons_2, R.drawable.icons_3, R.drawable.icons_4, R.drawable.icons_5, R.drawable.icons_6, R.drawable.icons_7, R.drawable.icons_8, R.drawable.icons_9 }; private String[] detailsStrings = new String[]{"现已加入肯基佬豪华午餐~!", "走上人生巅峰~!", "这是大自然的规律,没办法避免的呀~", "那个....那个...就从我的...额...我的....额....尸体上跨过去吧!", "老娘不在乎~~!", "下次有女性角色,还让你演!", "——。——", "...........", "您的拉链已经拉好了!" }; private int[] detailsimgs = new int[]{R.drawable.details_img2, R.drawable.details_img3, R.drawable.details_img4, R.drawable.details_img5, R.drawable.details_img6, R.drawable.details_img7, R.drawable.details_img8, R.drawable.details_img9, R.drawable.details_img10 }; private ListView listView; private int currentPosition; private LinearLayout detailsLayout; private TextView detailsTextView; private ImageView detailsImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); currentPosition = -1; findViews(); initList(); } private void findViews() { listView = (ListView) findViewById(R.id.first_listview); detailsLayout = (LinearLayout) findViewById(R.id.details_layout); detailsTextView = (TextView) detailsLayout.findViewById(R.id.text_details); detailsImageView = (ImageView) detailsLayout.findViewById(R.id.image_details); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } private void initList() { setFirstListBackgroundAdapter firstlistAdapter = new setFirstListBackgroundAdapter(this, getFirstListItemData(), R.layout.firstlist_item, new String[]{"f_title", "f_img" }, new int[]{R.id.first_listview_item_title, R.id.first_listview_item_img }); listView.setAdapter(firstlistAdapter); } private List<Map<String, Object>> getFirstListItemData() { List<Map<String, Object>> firstList = new ArrayList<Map<String, Object>>(); for (int i = 0; i < listviewtitle.length; i++) { Map<String, Object> map1 = new HashMap<String, Object>(); map1.put(FIRSTLIST_TITLE, listviewtitle[i]); map1.put(FIRSILIST_IMG, listviewimg[i]); firstList.add(map1); } return firstList; } class setFirstListBackgroundAdapter extends SimpleAdapter { public setFirstListBackgroundAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); // TODO Auto-generated constructor stub } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = super.getView(position, convertView, parent); convertView.setBackgroundColor(getResources().getColor(color.white)); if (position == currentPosition) { convertView.setBackgroundColor(getResources().getColor(color.holo_blue_light)); } final int realPosition = position; final ViewGroup vGroup = parent; convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 记录当前位置 currentPosition = realPosition; v.setBackgroundColor(getResources().getColor(color.holo_blue_light)); // 改变上一个item的背景色为白色,将本次改变背景色的view放入parent中,方便下次取用将背景色改变回白色 View view = (View) vGroup.getTag(); if (view != null) { view.setBackgroundColor(getResources().getColor(color.white)); } v.setBackgroundColor(getResources().getColor(color.holo_blue_light)); vGroup.setTag(v); // 显示相应的右边details的内容 detailsTextView.setText(detailsStrings[realPosition]); detailsImageView.setImageDrawable(getResources().getDrawable(detailsimgs[realPosition])); } }); return convertView; } }}
重点是getView方法,解决后就没问题了~
0 0
- 解决: 用代码改变listview的item背景色时,点击一个item,每隔几个item背景色重复
- 有关ListView点击时item的背景色
- listview设置item点击背景色
- ListView中item点击去除背景色
- 点击tabbarItem变Item的背景色
- Android 中listview点击一个item时背景色的设置
- Android ListView的item背景色设置
- Android ListView的item背景色设置
- listview更改选中时item背景色
- listview更改选中时item背景色
- listview更改选中时item背景色
- listview更改选中时item背景色
- listview更改选中时item背景色
- listview更改选中时item背景色
- ListView 点击Item的时候,改变文字颜色和背景色
- ListView 点击Item的时候,改变文字颜色和背景色
- ListView 点击Item的时候,改变文字颜色和背景色
- android listView 点击Item的时候,改变文字颜色和背景色
- 汇编语言的冒泡排序和二分法
- 认识java.lang.Runtime类
- Win8 WiFi共享设置
- 并发性能计数器模块
- F1Book使用总结
- 解决: 用代码改变listview的item背景色时,点击一个item,每隔几个item背景色重复
- 使用mysql dump 导入与导出的方法
- ArcGIS Engine Style文件操作
- Windows Azure 功能更新:可用性99.99+%的容灾站点只读访问,调度服务,监控服务改进
- ExtJS中的TreeStore如何添加json格式的数据
- 网络抓包工具fidder
- Java Interface 是常量存放的最佳地点吗?
- sequelize node数据库连接库
- 收藏 使用webbrowser控件时,如何屏蔽网站弹出的对话框