2010-09-27 80 views
1

我有一个ListView。当我点击一个ListItem,我设置列表项(它的视图)的背景下,以另一种颜色:ListView选择器问题:选择不会被删除

listView.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
        setupDetailView(position); 
        setupChartView(position); 
        setupARView(position); 
        emptyView.setVisibility(View.INVISIBLE); 

        quotesAdapter.isSelected = true; 
        //v.setBackgroundResource(R.drawable.stocks_selector); 
       } 
      }); 

这里是我的适配器:

private class QuoteAdapter extends ArrayAdapter<Quote> { 

     private ArrayList<Quote> items; 
     public boolean isSelected = false; 

     public QuoteAdapter(Context context, int textViewResourceId, ArrayList<Quote> items) { 
      super(context, textViewResourceId, items); 
      this.items = items; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 
       LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.mainrow, null); 

       if(isSelected) 
        v.setBackgroundResource(R.drawable.red); 
       else 
        v.setBackgroundResource(R.drawable.transparent_background); 
      } 

的问题是,如果我选择多行,那么多行具有彩色背景。我只希望被点击的项目具有彩色背景。所以如果我点击第2行,我希望它变成红色,那么如果我点击第1行,我想第2行恢复正常,第1行变成红色。

我该怎么做?

回答

2

把你的列表中选择您的ListView

<ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:cacheColorHint="#00000000" 
     android:listSelector="@drawable/stocks_selector" /> 

您stocks_selector.xml应该是这个样子

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    type="rectangle" 

> 
    <gradient 
     android:startColor="@color/start_gradient" 
     android:endColor="@color/end_gradient" 
     android:angle="270" /> 
/> 
</shape> 
+0

没有运气,同样的结果。 – 2010-09-27 22:10:50

+0

你确实删除了setBackground调用权吗? – 2010-09-27 22:35:36

+0

恩,你不需要州列表。 ListView将管理选择的内容。查看SDK drawables(list .... xml)以了解如何构建选择器。 – 2010-09-27 22:40:05