2010-10-13 84 views
0

關於在滾動ListView時被檢查的不需要的複選框的已知問題,您好,誰能給我一個想法如何正確使用checkedTextView,以便我可以在滾動時正確保持檢查狀態列表。我認爲listview會在使用checkedtextView時保持複選框狀態,但似乎並非如此。或者我必須使用checkedTextView的默認ID。我似乎無法找到這種情況下使用cursorAdapter或SimpleCursorAdapter的示例。謝謝ListView中的複選框狀態問題

我已經嘗試過使用這個,但我真的不知道如何處理設置的標籤位置。這裏是一小塊代碼:

//bindView() method in SimpleCursorAdapter 
//viewHolder holder; 
    //Cursor c; 

    holder.checkedText = (CheckedTextView)view.findViewById(R.id.view_checked); 
    holder.checkedText.setTag(c.getPosition()); 
     holder.checkedText.setOnClickListener(new View.OnClickListener() { 
         public void onClick(View v) 
         { 
           v.getTag(); 
          ((CheckedTextView) v).toggle(); 
         } 
        }); 

我的XML標準配置:

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

    <ListView android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:choiceMode="multipleChoice"/> 

    <TextView android:id="@android:id/empty" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/no_notes"/> 
</LinearLayout> 

我的自定義佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:padding="6dp"> 

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="2dp"> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/viewNameText" 
      android:id="@+id/viewNameId"> 
     </TextView> 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:gravity="center_horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0" 
     android:padding="2dp"> 


     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="start Date" 
      android:layout_gravity="right" 
      android:id="@+id/DateId"> 
     </TextView> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="start Time" 
      android:layout_gravity="right" 
      android:id="@+id/TimeId"> 
     </TextView> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      > 



    <CheckedTextView 
      android:id="@+id/title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:checked="false" 
      android:focusable="false" 
      android:clickable="true" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
      /> 

    </LinearLayout> 

</LinearLayout>   

回答

0

我以爲列表視圖需要保持複選框的護理狀態時使用checkedtextView但似乎並非如此。

它應該,如果你的ListViewandroid:choiceMode="multiple"

我一定要使用默認ID爲checkedTextView

你可能。我唯一的一次實現了多選ListView,我已經使用了標準的行佈局,而不是自定義的佈局。

+0

是的,我的列表視圖的屬性choiceMode爲multiple。它雖然沒有默認的ID。如果這有幫助,我在onCreate中使用標準的listview \佈局,然後使用我的自定義佈局來顯示項目。但我checkedTextView是在我的自定義佈局。我應該將其移動到我的標準佈局嗎? – irobotxxx 2010-10-13 18:50:47

+0

我已經在上面添加了我的xml佈局,以顯示我的意思。再次感謝您的時間 – irobotxxx 2010-10-13 18:56:36

+0

@manuelJ:嘗試將您的'CheckedTextView'的'android:id'更改爲'android:id =「@ android:id/text1'。您可以在Java代碼中將此引用爲android。 R.id.text1'。 – CommonsWare 2010-10-13 19:19:51