0

我很漂亮的初學者,所以讓我容易。我有兩個listview並行,這裏只有listViewSelectFile他可以使檢查的。問題是當我從這個列表視圖中檢查一個項目!例如:如果我從列表視圖中選擇第一個項目,下一個項目的直到我移動從列表視圖的滾動未選中。如果在一頁上它們可以是格言9個項目的要看(第一個項目是檢查下8個未選中)並且10個項目被檢查然後8個項目未被選中然後項目19被檢查並且迄今爲止一個。我測試了電話水平,這是同樣的問題。我認爲問題的出現是當我移動滾動下一個項目(CheckTextView ID)他給ID 0,他乘以我的CheckTextView ID。我該如何解決這個問題?任何示例?謝謝 !!!!!如果你沒有得到這個問題,也許你可以給我一個例子,說明如何使用textviewcheck創建2個listview並列。滾動列表視圖倍數我的視圖檢查的

PopulateListView(); 

從BOT它在PopulateListView()全碼:

adapterImageFileName = new ItemsAdapter(
         screen3_select_from_lists.this, mImageFilenames); 

         listViewSelectFile.setAdapter(adapterImageFileName); 

      listViewSelectFile 
        .setOnItemClickListener(new OnItemClickListener() { 

         @Override 
         public void onItemClick(AdapterView<?> parent, 
           View view, int position, long id) { 
          // TODO Auto-generated method stub 
          // When clicked, show a toast with the TextView text 
          try { 
           LinearLayout item=(LinearLayout) view; 
           CheckedTextView tv = (CheckedTextView)item.findViewById(R.id.textView1); 
          toggle(tv); 

          } catch (Exception e) { 
           Toast.makeText(getApplicationContext(), 
             e.getMessage(), Toast.LENGTH_LONG) 
             .show(); 
          } 
         } 
        }); 

切換功能:

public void toggle(CheckedTextView v) { 
    if (v.isChecked()) { 
     v.setChecked(false); 
    } else { 
     v.setChecked(true); 
    } 
} 

MyAdapter:

private class ItemsAdapter extends BaseAdapter { 

     String[] items; 

     public ItemsAdapter(Context context, String[] mImageFilenames) { 
      // TODO Auto-generated constructor stub 
      this.items = mImageFilenames; 
     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return items.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      View v = convertView; 
      if (v == null) { 
       LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.list_view_rows, null); 
      } 
      CheckedTextView post = (CheckedTextView)v 
        .findViewById(R.id.textView1); 
      post.setText(items[position]); 
      return v; 
     } 

    } 

和我的XML,第2並行列表視圖' S:

<?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="match_parent" 
    android:baselineAligned="false" > 



     <ListView 
      android:id="@+id/listviewSelectStudents" 
      android:layout_width="0dip" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:choiceMode="multipleChoice" 
      > 
     </ListView> 


     <ListView 
      android:id="@+id/listviewSelectFiles" 
      android:layout_width="0dip" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:choiceMode="multipleChoice"> 
     </ListView> 


</LinearLayout> 

list_view_rows.xml:

<?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="match_parent" 
    android:orientation="vertical" > 



    <CheckedTextView 
     android:id="@+id/textView1" 
     android:paddingLeft="20dip" 
     android:paddingRight="20dip" 
     android:paddingTop="10dip" 
     android:paddingBottom="10dip" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="?android:attr/listPreferredItemHeight" 
     android:gravity="center_vertical" 
     android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
     android:onClick="toggle" /> 

</LinearLayout> 

回答

0

你的問題是,你的看法是由Android爲了優化資源再利用。我設法解決這個問題,創建我自己的適配器,並在我的適配器內保存我檢查過的ID。每次我的getView方法被調用時,我清除檢查對象,然後我看到在我的檢查行結構中,這個行/ ID是否被用戶檢查過。

然後,如果我旋轉屏幕,我向我的onSaveInstanceState中檢查的項目的數組的適配器詢問,我在我的onRestoreInstanceState方法中重用。

希望它有幫助。

+0

仍然不起作用,請檢查頂部的代碼,它已更新。你可以糾正我的代碼?謝謝 ! – user3411394

+0

我不能看到你的listview索引。除此之外,您需要在'getview'方法中執行setchecke(true或false),具體取決於您提供給適配器的數組 – zozelfelfo