android 中通过不同的条件,改变listview中字体颜色及背景色

结果图:
android 中通过不同的条件,改变listview中字体颜色及背景色

通过适配器进行操作:

public class SystemAdapter extends BaseAdapter {
    private ArrayList<SjClass> sData;
    private Context sContext;
    private  int dataSize;
    private int sCurrentItem=0;
    private boolean isEquals=false;
    public SystemAdapter(ArrayList<SjClass> sData, Context sContext) {
        this.sData = sData;
        this.sContext = sContext;
    }

    @Override
    public int getCount() { return sData.size(); }

    @Override
    public Object getItem(int position) { return sData.get(position); }

    @Override
    public long getItemId(int position) { return position; }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if(convertView==null){
            convertView= LayoutInflater.from(sContext).inflate(R.layout.list_system,parent,false);
        }
        TextView time=(TextView)convertView.findViewById(R.id.time);
        TextView device=(TextView)convertView.findViewById(R.id.number2);
        TextView police=(TextView)convertView.findViewById(R.id.callPolice);
        TextView rJieYang=(TextView)convertView.findViewById(R.id.rJieYang);
        TextView temp=(TextView)convertView.findViewById(R.id.temp);
        TextView ph=(TextView)convertView.findViewById(R.id.ph);
        TextView orp=(TextView)convertView.findViewById(R.id.orp);
        TextView np=(TextView)convertView.findViewById(R.id.np);
        TextView zDu=(TextView)convertView.findViewById(R.id.zDu);
        TextView dDao=(TextView)convertView.findViewById(R.id.dDao);

        time.setText(sData.get(position).getTime());
        rJieYang.setText(sData.get(position).getRJieYang());
        temp.setText(sData.get(position).getTemp());
        ph.setText(sData.get(position).getPh());
        orp.setText(sData.get(position).getOrp());
        np.setText(sData.get(position).getNp());
        zDu.setText(sData.get(position).getZDu());
        dDao.setText(sData.get(position).getDDao());
        device.setText(sData.get(position).getDevice());
        police.setText(sData.get(position).getPolice());
        
/*
 *  通过数组找到要修改的对象,然后得到要修改的属性
 *  最后判断,修改颜色
 *  
 *  注意:一定要通过数组找, 通过TextView :String p=device.getText().toSting();没有用
 */
        String p=sData.get(position).getPolice();
        if("在线".equals(p)){
            police.setTextColor(Color.parseColor("#0A8F0A"));//字体绿色
            convertView.setBackgroundColor(Color.parseColor("#ffffff"));//背景色
           
        }
        else if("离线".equals(p)){
            police.setTextColor(Color.parseColor("#991111"));//红色
            convertView.setBackgroundColor(Color.parseColor("#ffffff"));
        }

        return convertView;
    }

}

参考:https://blog.csdn.net/wshngyf/article/details/50975281

第二种:被点击时,颜色及背景色改变
android 中通过不同的条件,改变listview中字体颜色及背景色
android 中通过不同的条件,改变listview中字体颜色及背景色

public class SjSingleAdapter extends BaseAdapter {
    private ArrayList<SjClass> ssData;
    private Context sContext;
    private int mCurrentItem=0;
    private boolean isClick=false;

    public SjSingleAdapter(ArrayList<SjClass> ssData, Context sContext) {
        this.ssData = ssData;
        this.sContext = sContext;
    }
    public SjSingleAdapter(){}
    @Override

    public int getCount() {
        return ssData.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView==null) {
            convertView = LayoutInflater.from(sContext).inflate(R.layout.sj_single, parent, false);
        }
        TextView sTime=(TextView)convertView.findViewById(R.id.stime);
        TextView sName=(TextView)convertView.findViewById(R.id.name);
        TextView sNumber=(TextView)convertView.findViewById(R.id.number);

        sTime.setText(ssData.get(position).getTime());
        sName.setText(ssData.get(position).getName());
        sNumber.setText(ssData.get(position).getNumber());

/*
*这个进行判断mCurrentItem=行号,isClick是否点击
*/
        if (mCurrentItem==position&&isClick){
            convertView.setBackgroundColor(Color.parseColor("#FFEFDB"));
            sTime.setTextColor(Color.parseColor("#9933cc"));
        }else{
            convertView.setBackgroundColor(Color.parseColor("#ffffff"));
            sTime.setTextColor(Color.parseColor("#000000"));
        }

       
        return convertView;
    }
    //获取行号
    public void setCurrentItem(int currentItem){
        this.mCurrentItem=currentItem;
    }
//是否点击
    public void setClick(boolean click){
        this.isClick=click;
    }
}

Activity中代码:监听是否被点击, listView.setOnItemClickListener方法。

private void listClick(){
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               sAdapter.setCurrentItem(position);
               sAdapter.setClick(true);
               sAdapter.notifyDataSetChanged();
           }
       });
   }

最后在listview初始化后 调用listClick()方法