2012-09-17 50 views
1

的颜色。如何填写我想设置选择item.I已经设置列表视图项和颜色像列表视图中颜色的选择列表项

{ 
    setListAdapter(new ArrayAdapter<String>(getActivity(), 
R.layout.simple_list_item_checkable_1, android.R.id.text1,Data.PERSON)); 

    ListView listView = getListView(); 
    listView.setTextFilterEnabled(true); 

    listView.setOnItemLongClickListener(new OnItemLongClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 

    int childCount = parent.getChildCount(); 
    for (int i = 0; i < childCount; i++) { 
    View listItem = parent.getChildAt(i); 

    if (listItem != null) 
    parent.setBackgroundColor(0x00000000); 
    view.setBackgroundColor(Color.RED);  
    } 
     });  
}                       
+1

是什么错误?你的代码的效果是什么? –

+0

你不会说会发生什么。 view.setBackgroundColor(Color.RED);应该这是listItem.setBackgroundColor? – Simon

+0

您可以[见这里](http://samir-mangroliya.blogspot.in/p/android-customized-listview.html) –

回答

0

这样做:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape > 
     <solid android:color="#929292" /> 
     </shape> 
    </item> 



    <item> 
    <shape > 
     <solid android:color="#FFFFFF" /> 
    </shape> 
    </item> 

</selector> 

使用此属性android:state_pressed="true",当你按下它时,它会为选定的项目制作颜色。

+0

此代码成功运行,我也想实现点击与长按(两状态保存在同一时间)? – Prashant

+0

如果你想在你的代码中实现这两个事件,那么也请添加长按。但是,它将如何发生,两个事件都不是同时执行的,那么状态如何同时被保存? – 2012-09-17 10:35:46

+0

如果答案对您的帖子有用,那么将其作为正确的投票。那么只有那些将搜索相关问题的人才会有用。 – 2012-09-17 10:47:42

0

您可以使用:

声明下面的属性在XML含有的ListView。

android:listSelector="#AF5c12" // any color code to set color to selected item from list. 
0

使用listSelector属性设置所选项目颜色:

<ListView android:id="@+id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:divider="@null" 
    android:dividerHeight="0dip" 
    android:listSelector="@drawable/list_selector" /> 
0

您可以设置所选项目颜色的xml:

<ListView 
     android:listSelector="@android:color/holo_red_dark" 
    </ListView 
0

对于最低API等级: 创建属性Android的一个选择文件:state_activated =真/假 并将其设置为背景的列表项。 另外还包含代码:listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

对于其他API级别: 您必须创建一个自定义数组适配器并在其中添加下面的方法。 最初selectedPosition = -1; //这是为了在第一次加载列表时删除选择。

public void setseletion(int position) { 
    this.selectedPosition = position; // selected position in the list 
    notifyDataSetChanged(); 
} 

在getView()方法,除了设置列表包括这也

public View getView(int position, View convertView, ViewGroup parent) { 
if (position == selectedPosition) { 
     convertView.setBackgroundColor(getResources().getColor(
        R.color.gray)); 
} else { 
     convertView.setBackgroundColor(getResources().getColor(
        R.color.transparent)); 
} 

最后包含这个在列表视图的OnItemClickListener。

public void onItemClick(AdapterView<?> arg0, View view, int position, 
     long arg3) { 
    MyArrayAdapter adapter = (MyArrayAdapter) listView.getAdapter(); 
    adapter.setseletion(position); 
} 
+0

你有没有试过我的回答? – light365