当前位置: 代码迷 >> Android >> listview选项item点击切换背景有关问题
  详细解决方案

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

热度:57   发布时间:2016-05-01 12:18:51.0
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);
  相关解决方案