做一個詞典,要將測試的結果在最后顯示出來。
舉例:
單詞: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
?
?
如上上面的一行代碼就解決了問題了。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
