需求变动,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;
}
实现了以上的需求。