1. 程式人生 > >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

第二種:被點選時,顏色及背景色改變
在這裡插入圖片描述
在這裡插入圖片描述

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()方法