listview选项item点击切换背景有关问题

listview选项item点击切换背景问题listview 怎么实现item点击后改变该选项的背景颜色或图片例如:listview

listview选项item点击切换背景问题
listview 怎么实现item点击后改变该选项的背景颜色或图片
例如:listview有2个选项{item1,item2}(我只是举例 item选项并不确定的)
默认颜色为灰色
当我点击item1后 该项背景颜色变为蓝色 点击item2后 item1颜色变回灰色 item2背景色变为蓝色

谢啦...
[解决办法]
设置点击监听,记下当前点击的是第几个(记为k),紧接着调用adapter.notifydatachanged来刷新list。
在adapter的getview中判断,如果是当前是第k项,则调用convertview.setbackgrouncolor设为蓝色背景,否则设为灰色
[解决办法]
在适配器里面的getView()中设置view.setBackgroundResource(R.color.颜色名称);如果你要选择条件的话,你可以加上自己的条件,例如:if(position % 2 == 0){view.setBackgroundResource(R.color.颜色名称);}else view.setBackgroundResource(R.color.另一种颜色名称);
[解决办法]


package com.ttt;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class ListTest extends Activity {
    
    ListView listTest;
    
    List<String> list = new ArrayList<String>();
    Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
    ListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testlist);
        
        listTest = (ListView) findViewById(R.id.testlist);
        adapter = new ListAdapter();
        listTest.setAdapter(adapter);
        
        listTest.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                Iterator<Integer> it = map.keySet().iterator();
                while(it.hasNext()) {
                    Integer itr = it.next();
                    if(itr != position) {
                        map.put(itr, false);


                    } else {
                        map.put(itr, true);
                    }
                }
                adapter.notifyDataSetChanged();
            }
        });
        
    }
    
    
    class ListAdapter extends BaseAdapter {
        
        LayoutInflater factory;
        
        
        public ListAdapter() {
            for(int i = 0; i < 30; i++) {
                list.add(i + "");
                map.put(i, false);
            }
            factory = LayoutInflater.from(ListTest.this);
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout lin = null;
            TextView tv = null;
            if(convertView == null) {
                convertView = factory.inflate(R.layout.listitem, null);
            }
            lin = (LinearLayout) convertView.findViewById(R.id.lin);
            tv = (TextView) convertView.findViewById(R.id.test);


            
            tv.setText(list.get(position));
            
                if(map.get(position)) {
                    lin.setBackgroundColor(Color.parseColor("#0000CD"));
                } else {
                    lin.setBackgroundColor(Color.parseColor("#DCDCDC"));
                }
            
            return convertView;
        }
        
        
    }
    

}


[解决办法]
引用:
Java code

package com.ttt;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Vi……
++
[解决办法]
本帖最后由 graceminc 于 2012-10-31 09:54:35 编辑
@Override
public boolean onOptionsItemSelected(MenuItem menu) {
    switch (menu.getItemId()) {

    case R.id.menuitem1:

        break;

        case R.id.menuitem2:

        break;

        default:
        break;
    }

    return true;
}

[解决办法]
给listview添加监听 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
LayoutInflater inflater = mContext.getLayoutInflater();
convertView = inflater.inflate(R.layout.vlist, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//绘制的时候判断是否是选中项,是绘制选中的状态,否则绘制非选中的状态
if(selectedId == position){
holder.text.setBackgroundResource(R.drawable.diancai2);
}else{
holder.text.setBackgroundResource(R.drawable.diancai3);
}

holder.text.setText(mList.get(position));
return convertView;
}