android 中通過不同的條件,改變listview中字型顏色及背景色
阿新 • • 發佈:2018-11-03
結果圖:
通過介面卡進行操作:
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()方法