android listView 更改simpleAdapter中布局layout中textView颜色

首先该activity是继承listactivity,因为每次返回时都会把之前的颜色变回默认的颜色,所以干脆每次都把list的每一个item的((TextView)ll.getChildAt(1)).getText().equals("失败")都设置为红色,“成功”一样。

for(int i=0; i< this.getListView().getCount(); i++){
    LinearLayout ll = (LinearLayout)getInstance().getListView().getChildAt(i);
    if(ll != null && ((TextView)ll.getChildAt(1)).getText().equals("失败")){
     ((TextView)ll.getChildAt(1)).setTextColor(Color.RED);
    }else if(ll != null && ((TextView)ll.getChildAt(1)).getText().equals("成功")){
     ((TextView)ll.getChildAt(1)).setTextColor(Color.GREEN);
    }
   }

后来发现这个还是有问题,首先就要了解listview的显示原理,我的感觉类似于循环“队列”,从而到达节省内存资源,即如listview被下滚动后第一行失去屏幕显示,它会被系统循环利用来补充到最后一行显示。上滚也一样。

解决上面的问题还是自己重写adapter,在getView方法中实现想要的效果。

listAdapter = new MainAdapter(this, al);.............this.setListAdapter(listAdapter);也可以达到刷新listView的效果

 public class MainAdapter extends BaseAdapter {
   private Context context;
   private List> dataList;
   
   public MainAdapter(Context context, List> al) {
    this.context = context;
    this.dataList = al;
   }
   
   @Override
   public int getCount() {
    return dataList.size();
   }
   
   @Override
   public Object getItem(int position) {
    return dataList.get(position);
   }
   
   @Override
   public long getItemId(int itemId) {
    return itemId;
   }
   
   @Override
   public View getView(int position, View convertView, ViewGroup parentView) {
    ViewHolder holder;
    if (convertView == null) {
     convertView = LinearLayout.inflate(context, R.layout.listview, null);
     holder = new ViewHolder();
     holder.textItem = (TextView) convertView.findViewById(R.id.testItem);
     holder.textStatus = (TextView) convertView.findViewById(R.id.testStatus);
     convertView.setTag(holder);
    }
    else {
     holder = (ViewHolder) convertView.getTag();
    }
    
    holder.textItem.setText(dataList.get(position).get("testItem"));
    holder.textStatus.setText(dataList.get(position).get("testStatus"));
    
    
    if(holder.textStatus.getText().toString().equals("成功")){
     holder.textStatus.setTextColor(Color.GREEN);
    }else if(holder.textStatus.getText().toString().equals("失败")){
     holder.textStatus.setTextColor(Color.RED);
    }else if(holder.textStatus.getText().toString().equals("待测")){
     holder.textStatus.setTextColor(Color.WHITE);
    }
    
    return convertView;
   }
   
   
   /**
    * 定义ListView要获取的控件
    */
   class ViewHolder {
    TextView textItem;
    TextView textStatus;
   }
  }

你可能感兴趣的:(android listView 更改simpleAdapter中布局layout中textView颜色)