2012-09-17 48 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