当前位置: 代码迷 >> Android >> android listview 动态改变item内空间的色彩
  详细解决方案

android listview 动态改变item内空间的色彩

热度:12   发布时间:2016-05-01 20:51:08.0
android listview 动态改变item内空间的颜色

做一个词典,要将测试的结果在最后显示出来。

举例:

单词:anderstand

选项:A:知道

? ? ? ? ?B:牛

? ? ? ? ?C:大便

? ? ? ? ?D:热火队

?

显然答案是 A。

做测测试的时候,类似这样的单词测试有50个,每次都会让你选择一个的。比如我选择了

B:牛,那么这是错的。

?

我要在最后的单词测试中将显示:

?

单词:anderstand

选项:A:知道

? ? ? ? ?B:牛

? ? ? ? ?C:大便

? ? ? ? ?D:热火队

?

将正确的答案的颜色设置成为蓝色,选错的答案设置成为红色,类似于


-----------------------------------------------------------》》》

也就是动态的显示我们a b ?c ?d四个选项的颜色喽。

listview用的是适配器是继承了baseadapter,所以我们从网上找答案,

(其实,我相信,好多同学朋友,起初使用listview都是通过百度,或者是谷歌来找代码做demo的)

于是百度,谷歌下,

?

http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html

代码:

public class MyAdapter extends BaseAdapter{         private LayoutInflater mInflater;                          public MyAdapter(Context context){            this.mInflater = LayoutInflater.from(context);        }        @Override        public int getCount() {            // TODO Auto-generated method stub            return mData.size();        }         @Override        public Object getItem(int arg0) {            // TODO Auto-generated method stub            return null;        }         @Override        public long getItemId(int arg0) {            // TODO Auto-generated method stub            return 0;        }         @Override        public View getView(int position, View convertView, ViewGroup parent) {                         ViewHolder holder = null;            if (convertView == null) {                                 holder=new ViewHolder();                                   convertView = mInflater.inflate(R.layout.vlist2, null);                holder.img = (ImageView)convertView.findViewById(R.id.img);                holder.title = (TextView)convertView.findViewById(R.id.title);                holder.info = (TextView)convertView.findViewById(R.id.info);                holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);                convertView.setTag(holder);                             }else {                                 holder = (ViewHolder)convertView.getTag();            }                                      holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));            holder.title.setText((String)mData.get(position).get("title"));            holder.info.setText((String)mData.get(position).get("info"));                         holder.viewBtn.setOnClickListener(new View.OnClickListener() {                                 @Override                public void onClick(View v) {                    showInfo();                                 }            });                                      return convertView;        }             }
?

还有:http://xqjay19910131-yahoo-cn.iteye.com/blog/1167956

代码:

?

public class MyAdapter extends BaseAdapter{                    private LayoutInflater flater;                    public MyAdapter(Context context) {              super();              this.flater = LayoutInflater.from(context);          }            public int getCount() {              // TODO Auto-generated method stub              return list.size();          }            public Object getItem(int arg0) {              // TODO Auto-generated method stub              return null;          }            public long getItemId(int arg0) {              // TODO Auto-generated method stub              return 0;          }            public View getView(int position, View convertView, ViewGroup parent) {              // TODO Auto-generated method stub              ViewHolder holder = null;              if(convertView == null){                  holder = new ViewHolder();                  convertView = flater.inflate(R.layout.user2, null);                  holder.headimg = (ImageView) convertView.findViewById(R.id.headimg);                  holder.nickname = (TextView) convertView.findViewById(R.id.nickname);                  holder.textsign = (TextView) convertView.findViewById(R.id.textsign);                  holder.listbtn = (Button) convertView.findViewById(R.id.listbtn);                  convertView.setTag(holder);              }              else{                  holder = (ViewHolder) convertView.getTag();              }              holder.headimg.setBackgroundResource((Integer)list.get(position).get("headimg"));              holder.nickname.setText((String)list.get(position).get("nickname"));              holder.textsign.setText((String)list.get(position).get("textsign"));              holder.listbtn.setOnClickListener(new View.OnClickListener() {                  public void onClick(View arg0) {                  }              });              return convertView;          }      }  }  
?

又或者两者的代码是一样的。

于是,我弄他们的代码下来到我的代码中就成了这样的:

 // 查询历史上搜索过的单词 ,查询的表是history_word	private class TestWordResutListAdapter extends BaseAdapter {		// List<Map<String , String>> lst ;		private LayoutInflater mInflater;		public TestWordResutListAdapter(Context context, List<Map<String, String>> lst) {			// this.lst = lst ;			this.mInflater = LayoutInflater.from(context);					}		@Override		public int getCount() {			// TODO Auto-generated method stub			return lst.size();		}		@Override		public Object getItem(int position) {			// TODO Auto-generated method stub			return position;		}		@Override		public long getItemId(int position) {			// TODO Auto-generated method stub			return position;		}		@Override		public View getView(int position, View convertView, ViewGroup parent) {			// 获取ListView 每个布局文件						if (convertView == null) {				convertView = getLayoutInflater().inflate(R.layout.wordtestresult_list_item, null); // 获取每个ListView行的布局			}									//获得item word单词的id的值的			TextView tv_wordtestresult_item_id = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_id); // 显示的单词在屏幕上的顺序			//显示序号的			TextView tv_wordtestresult_item_index = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_index); // 显示的单词在屏幕上的顺序			//显示单词的			TextView tv_wordtestresult_item_word = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_word); // 显示的单词在屏幕上的顺序			//显示答案1			TextView tv_wordtestresult_item_meana = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meana); // 显示的单词在屏幕上的顺序			//显示答案2			TextView tv_wordtestresult_item_meanb = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meanb); // 显示的单词在屏幕上的顺序			//显示答案3			TextView tv_wordtestresult_item_meanc = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meanc); // 显示的单词在屏幕上的顺序			//显示答案4			TextView tv_wordtestresult_item_meand = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meand); // 显示的单词在屏幕上的顺序											// 根据List lists的值进行设置			Map<String, String> wordListMap = (Map<String, String>) lst					.get(position);									String id = wordListMap.get("id")  ;			String keyid = "[" +  wordListMap.get("keyid") + "]";			String name = wordListMap.get("name");			String ans_A = wordListMap.get("ans_A");			String ans_B = wordListMap.get("ans_B");			String ans_C = wordListMap.get("ans_C");			String ans_D = wordListMap.get("ans_D");						String ans_index = wordListMap.get("ans_index").trim();			String ans_press = wordListMap.get("ans_press").trim();						System.out.println("------->>ans_index" + ans_index + "------>>id=" + id);			System.out.println("------->>ans_press" + ans_press );						tv_wordtestresult_item_meanb.setTag(id) ;						if (ans_index.equals("1")) {  //为正确答案标记绿色的颜色				tv_wordtestresult_item_meana.setTextColor(Color.GREEN) ;				System.out.println("-------1>>id =" + id);							}			else if (ans_index.equals("2")) {								tv_wordtestresult_item_meanb.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------2>>id =" + id);						}			else if (ans_index.equals("3")) {				tv_wordtestresult_item_meanc.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------3>>id =" + id);			            }			else if (ans_index.equals("4")) {				tv_wordtestresult_item_meand.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------4>>id =" + id);			            }												if (!ans_index.equals(ans_press)) { //为选择错误的标记颜色为红色				System.out.println("ans_press------->>id =" + id);				if (ans_press.equals("1")) {					System.out.println("ans_press-------1>>id =" + id);					tv_wordtestresult_item_meana.setTextColor(Color.RED) ;				}								else if (ans_press.equals("2")) {					System.out.println("ans_press-------2>>id =" + id);					tv_wordtestresult_item_meanb.setTextColor(Color.RED) ;				}				else if (ans_press.equals("3")) {					System.out.println("ans_press-------3>>id =" + id);					tv_wordtestresult_item_meanc.setTextColor(Color.RED) ;                }				else if (ans_press.equals("4")) {					System.out.println("ans_press-------4>>id =" + id);					tv_wordtestresult_item_meand.setTextColor(Color.RED) ;                }			}									tv_wordtestresult_item_id.setText(id) ;			tv_wordtestresult_item_index.setText(keyid) ;			tv_wordtestresult_item_word.setText(name) ;			tv_wordtestresult_item_meana.setText("A) " +ans_A) ;			tv_wordtestresult_item_meanb.setText("B) " +ans_B) ;			tv_wordtestresult_item_meanc.setText("C) " +ans_C) ;			tv_wordtestresult_item_meand.setText("D) " +ans_D) ;						tv_wordtestresult_item_id = null ;			tv_wordtestresult_item_index = null ;			tv_wordtestresult_item_word = null ;			tv_wordtestresult_item_meana = null ;			tv_wordtestresult_item_meanb = null ;			tv_wordtestresult_item_meanc = null ;			tv_wordtestresult_item_meand = null ;						ans_index = null ;			ans_press = null ;			return convertView;		}	} // end class
?

? 这里的

						tv_wordtestresult_item_meana 			tv_wordtestresult_item_meanb			tv_wordtestresult_item_meanc 			tv_wordtestresult_item_meand 

item的四个控件是的眼神是根据item中,从数据库来的值进行设置的

		String ans_index = wordListMap.get("ans_index").trim();			String ans_press = wordListMap.get("ans_press").trim();						System.out.println("------->>ans_index" + ans_index + "------>>id=" + id);			System.out.println("------->>ans_press" + ans_press );						tv_wordtestresult_item_meanb.setTag(id) ;						if (ans_index.equals("1")) {  //为正确答案标记绿色的颜色				tv_wordtestresult_item_meana.setTextColor(Color.GREEN) ;				System.out.println("-------1>>id =" + id);							}			else if (ans_index.equals("2")) {								tv_wordtestresult_item_meanb.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------2>>id =" + id);						}			else if (ans_index.equals("3")) {				tv_wordtestresult_item_meanc.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------3>>id =" + id);			            }			else if (ans_index.equals("4")) {				tv_wordtestresult_item_meand.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------4>>id =" + id);			            }												if (!ans_index.equals(ans_press)) { //为选择错误的标记颜色为红色				System.out.println("ans_press------->>id =" + id);				if (ans_press.equals("1")) {					System.out.println("ans_press-------1>>id =" + id);					tv_wordtestresult_item_meana.setTextColor(Color.RED) ;				}								else if (ans_press.equals("2")) {					System.out.println("ans_press-------2>>id =" + id);					tv_wordtestresult_item_meanb.setTextColor(Color.RED) ;				}				else if (ans_press.equals("3")) {					System.out.println("ans_press-------3>>id =" + id);					tv_wordtestresult_item_meanc.setTextColor(Color.RED) ;                }				else if (ans_press.equals("4")) {					System.out.println("ans_press-------4>>id =" + id);					tv_wordtestresult_item_meand.setTextColor(Color.RED) ;                }			}
?

于是,做好以后,运行程序,当下拉上拉listview的时候,item的颜色是不对的,就是说,不该有颜色的控件,也添加了颜色。

可能是listview这样的情况大家遇到的比较少,我网上查了下,没有这样的例子。苦逼了,最后的居然是这样的:

?

?

@Override		public View getView(int position, View convertView, ViewGroup parent) {			// 获取ListView 每个布局文件			convertView = null ;			if (convertView == null) {				convertView = getLayoutInflater().inflate(R.layout.wordtestresult_list_item, null); // 获取每个ListView行的布局			}									//获得item word单词的id的值的			TextView tv_wordtestresult_item_id = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_id); // 显示的单词在屏幕上的顺序			//显示序号的			TextView tv_wordtestresult_item_index = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_index); // 显示的单词在屏幕上的顺序			//显示单词的			TextView tv_wordtestresult_item_word = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_word); // 显示的单词在屏幕上的顺序			//显示答案1			TextView tv_wordtestresult_item_meana = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meana); // 显示的单词在屏幕上的顺序			//显示答案2			TextView tv_wordtestresult_item_meanb = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meanb); // 显示的单词在屏幕上的顺序			//显示答案3			TextView tv_wordtestresult_item_meanc = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meanc); // 显示的单词在屏幕上的顺序			//显示答案4			TextView tv_wordtestresult_item_meand = (TextView) convertView			.findViewById(R.id.tv_wordtestresult_item_meand); // 显示的单词在屏幕上的顺序											// 根据List lists的值进行设置			Map<String, String> wordListMap = (Map<String, String>) lst					.get(position);									String id = wordListMap.get("id")  ;			String keyid = "[" +  wordListMap.get("keyid") + "]";			String name = wordListMap.get("name");			String ans_A = wordListMap.get("ans_A");			String ans_B = wordListMap.get("ans_B");			String ans_C = wordListMap.get("ans_C");			String ans_D = wordListMap.get("ans_D");						String ans_index = wordListMap.get("ans_index").trim();			String ans_press = wordListMap.get("ans_press").trim();						System.out.println("------->>ans_index" + ans_index + "------>>id=" + id);			System.out.println("------->>ans_press" + ans_press );						tv_wordtestresult_item_meanb.setTag(id) ;						if (ans_index.equals("1")) {  //为正确答案标记绿色的颜色				tv_wordtestresult_item_meana.setTextColor(Color.GREEN) ;				System.out.println("-------1>>id =" + id);							}			else if (ans_index.equals("2")) {								tv_wordtestresult_item_meanb.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------2>>id =" + id);						}			else if (ans_index.equals("3")) {				tv_wordtestresult_item_meanc.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------3>>id =" + id);			            }			else if (ans_index.equals("4")) {				tv_wordtestresult_item_meand.setTextColor(Color.GREEN) ;				System.out.println("ans_index-------4>>id =" + id);			            }												if (!ans_index.equals(ans_press)) { //为选择错误的标记颜色为红色				System.out.println("ans_press------->>id =" + id);				if (ans_press.equals("1")) {					System.out.println("ans_press-------1>>id =" + id);					tv_wordtestresult_item_meana.setTextColor(Color.RED) ;				}								else if (ans_press.equals("2")) {					System.out.println("ans_press-------2>>id =" + id);					tv_wordtestresult_item_meanb.setTextColor(Color.RED) ;				}				else if (ans_press.equals("3")) {					System.out.println("ans_press-------3>>id =" + id);					tv_wordtestresult_item_meanc.setTextColor(Color.RED) ;                }				else if (ans_press.equals("4")) {					System.out.println("ans_press-------4>>id =" + id);					tv_wordtestresult_item_meand.setTextColor(Color.RED) ;                }			}									tv_wordtestresult_item_id.setText(id) ;			tv_wordtestresult_item_index.setText(keyid) ;			tv_wordtestresult_item_word.setText(name) ;			tv_wordtestresult_item_meana.setText("A) " +ans_A) ;			tv_wordtestresult_item_meanb.setText("B) " +ans_B) ;			tv_wordtestresult_item_meanc.setText("C) " +ans_C) ;			tv_wordtestresult_item_meand.setText("D) " +ans_D) ;						tv_wordtestresult_item_id = null ;			tv_wordtestresult_item_index = null ;			tv_wordtestresult_item_word = null ;			tv_wordtestresult_item_meana = null ;			tv_wordtestresult_item_meanb = null ;			tv_wordtestresult_item_meanc = null ;			tv_wordtestresult_item_meand = null ;						ans_index = null ;			ans_press = null ;			return convertView;		}	} // end class
?

?

如上上面的一行代码就解决了问题了。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  相关解决方案