Android listview 不一樣的項底色不一樣,點擊再變不一樣顏色

需求變動,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;

}

實現了以上的需求。

相關文章
相關標籤/搜索