需求變動,android版本的app須要對listview的不一樣項設置不一樣的顏色,而且點擊以後,底色再變。android
先給一個效果圖。網絡
先講講業務,listview裏面的數據是動態的,而底色圖片是從網絡上下載下來。當點擊了某一個選擇項以後,再把這張圖片下載下來,更新listview.app
怎麼從網絡下載圖片,這個不是我要講的重點,今天重點講怎麼實現listview設置不一樣的圖片信息,而後點擊了某一項數據以後,再把圖片更新。佈局
首先,這裏講講selecter,你們都知道,直接在drawable下面寫一個xml文件,爲selecter,代碼以下:spa
<?xml version="1.0" encoding="utf-8" ?>xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">圖片
<item android:state_window_focused="false" android:drawable="@drawable/xinwen" />utf-8
<item android:state_focused="true" android:state_pressed="true" get
android:drawable="@drawable/xinwen1" /> it
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/xinwen1" />
<item android:state_selected="true" android:drawable="@drawable/xinwen1" />
<item android:state_focused="true" android:drawable="@drawable/xinwen1" />
<item android:drawable="@drawable/xinwen"/>
</selector>
這裏面的各個item項分別是操做listview獲得的效果,例如state_selected爲真的時候,會顯示另外的圖片底色。筆者試過,這種方式適合的業務是點擊變色的底色爲固定的,例如原本是紅色的,點擊變成綠色,全部的項都是這種效果。
而後,再說說在Adapter裏面添加效果的方法。直接貼代碼吧:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.mainmenulistitem, null);//得到listview項的佈局文件
viewHolder = new ViewHolder();
viewHolder.qunTitle = (TextView) convertView
.findViewById(R.id.leftlistquntitle);
viewHolder.mImageView = (RelativeLayout) convertView
.findViewById(R.id.leftqunimage);
//用viewHolder暫時存着文字信息和項的背景,這裏選擇相對佈局的方式,由於考慮到適配問題。
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
temp = qunFatherList.get(position); //數據項,這裏的數據爲要加載的文字信息
if(!isLeftlistClick)//沒有點擊的時候,就是第一次加載的時候,都不用變色
setAdapterContent();
else{
setAdapterClick();//點擊了某一項的時候的方法
}
return convertView;
}
private void setAdapterContent() { //把數據和圖片set到adapter裏面
if(temp.get("Qun_Title").equals("收藏夾")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.shoucang);
}else if(temp.get("Qun_Title").equals("全部欄目")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.suoyoulanmu1);
}else if(temp.get("Qun_Title").equals("搖一搖")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.yaoyiyao);
}else if(temp.get("Qun_Title").equals("兼職就業")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.jianzhijiuye);
}else if(temp.get("Qun_Title").equals("公文通")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.gongwentong);
}else if(temp.get("Qun_Title").equals("校園生活")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xiaoyuanshenghuo);
}else if(temp.get("Qun_Title").equals("學院動態")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xueyuandongtai);
}else if(temp.get("Qun_Title").equals("校園社交")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xiaoyuanshejiao);
}else{
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xinwen);
}
}
點擊以後變色要如何變色呢,這裏沒有想到好的方法,就用了一個比較笨的辦法,就是傳多一個參數到這個adapter來,而後對這個參數判斷,這個參數爲點擊listview的第幾項的值,而後用switch... case 0:{} case :1{}作操做。
若是傳過來的是0,就把列表的第一個圖片設成底色圖片,其餘的設置爲原來的圖片,如此類推。
switch(p){
case 0 :{
if(temp.get("Qun_Title").equals("收藏夾")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.shoucang1);//設置圖片變化。
}else if(temp.get("Qun_Title").equals("全部欄目")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.suoyoulanmu);
}else if(temp.get("Qun_Title").equals("搖一搖")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.yaoyiyao);
}else if(temp.get("Qun_Title").equals("公文通")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.gongwentong);
}
else if(temp.get("Qun_Title").equals("兼職就業")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.jianzhijiuye);
}else if(temp.get("Qun_Title").equals("校園生活")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xiaoyuanshenghuo);
}
else if(temp.get("Qun_Title").equals("學院動態")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xueyuandongtai);
}else if(temp.get("Qun_Title").equals("校園社交")){
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xiaoyuanshejiao);
}else{
viewHolder.qunTitle.setText(temp.get("Qun_Title"));
viewHolder.mImageView.setBackgroundResource(R.drawable.xinwen);
}
break;
}
實現了以上的需求。