2011-02-01 35 views
1

在屏幕布局,我宣佈我的列表視圖如何使列表視圖multiselectable

<ListView android:id="@id/android:list" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="#00FF00" 
       android:layout_weight="1" 
       android:drawSelectorOnTop="false"/> 

    <TextView android:id="@id/android:empty" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="#FF0000" 
       android:text="No data"/> 

和行編排

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView android:id="@+id/text1" 
     android:textSize="16sp" 
     android:textStyle="bold" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/text2" 
     android:textSize="16sp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

我的問題是我想讓我的列表視圖多選,但當我在列表視圖中添加屬性android:choiceMode="multipleChoice"它不起作用。有一種方法是用java代碼,但是當我改變id爲listview android:id="@id/multi_selectable_list時,與之前的android:id="@id/android:list一樣,那麼在佈局的輸入時間會給出錯誤。有沒有什麼辦法,或者以同樣的方式,我做錯了什麼。 其實我想multisectable列表視圖,規則是

  1. 有一個按鈕,如果我點擊了該名單應該在multiselected變化。
  2. 默認情況下,列表視圖不能多選。

回答

1

您可以添加此方法是列表視圖多選:


listView.setChoiceMode (int choiceMode);//for multiple choiceMode=2,For single choiceMode=1;for none cj\hoicMode=0; 

+0

但是當列表視圖ID爲 「@ ID /安卓名單」 ,如何在我的java代碼中訪問該id。例如,如果我們聲明「android:id =」@ id/multi_selectable_list「,那麼它可以找到findviewbyid(R.id.multi_selectable_list),但是當我使用」@ id/android:list「時,我如何找到列表ID ? – 2011-02-01 06:18:33

1

如果你的意思是你想從點擊整列項移動分別單擊每個子元素,那麼我認爲這會自動發生[android 2.1]。嘗試分別爲每個視圖分配一個OnClickListener。如果您希望獲取行項目,則使用v.getParent()。getParent()獲取視圖的父項。

//這是onItemClick()不使用現在

public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
{ 
    t.show(); 

    Object a = parent.getAdapter().getItem(position); 

    if(a instanceof YourListItem) 
     { 
      YourListItem yourListItem = (YourListItem) a; 

     } 
    else 
    { 

    } 
} 

//這個函數的onClick重建其

public void onClick(View v) 
{ 
    if(v.getId() == R.id.b_searchSaved) 
    { 
     context.startActivity(new Intent(context, Search.class)); 
    } 
    else if(v.getId() == R.id.savedRowItemText) 
    { 
     t.show(); 

     //there must be some more efficient way to do this 
     //i'm reconstructing data from onItemClick to find out position and item [route] 
     AdapterView<?> parent = (AdapterView<?>) v.getParent().getParent(); 

     int position = parent.getPositionForView(v); 

     Object a = parent.getAdapter().getItem(position); 

     if(a instanceof YourListItem) 
     { 
      YourListItem yourListItem = (YourListItem) a; 

     } 
    } 
    else 
    { 

    } 
}