2017-06-06 125 views
0

在我的列表視圖中我有一個複選框,當我選擇複選框前10行需要選擇,我做了這樣的代碼..但它是選擇除了第一個10行......任何人都可以幫助我......我需要在這裏做些改變。Android Listview選擇前10項

if (checked) 
        { 
        // Toast.makeText(MyList.this, "Checked.", Toast.LENGTH_LONG).show(); 
         //for(int i=0; i<lv.getChildCount();i++) 
         for(int i=0; i<lv.getAdapter().getCount();i++) 
         { 

          int m = 1; 
          final int firstListItemPosition = lv.getFirstVisiblePosition(); 

          //final int firstListItemPosition = (int) lv.getItemAtPosition(m); 
          final int lastListItemPosition = firstListItemPosition + 9; 



          if (i < firstListItemPosition || i > lastListItemPosition) { 
           View vii = lv.getAdapter().getView(i, null, lv); 
           //return listView.getAdapter().getView(pos, null, listView); 
           CheckBox cb = (CheckBox)vii.findViewById(R.id.selected); 
           cb.setChecked(true); 

          } else { 
           final int childIndex = i - firstListItemPosition; 

           CheckBox cb = (CheckBox)lv.getChildAt(childIndex).findViewById(R.id.selected); 
           cb.setChecked(true); 
          } 
          //Toast.makeText(MyList.this,s, Toast.LENGTH_LONG).show(); 


         } 
+0

將您的if條件改爲if(i> firstListItemPosition || i

+0

位置也可能不正確。 getFirstVisiblePosition()可能或可能不是您想要的位置。如果用戶選擇位置2,那麼這將是一個錯誤!您可以將每個複選框的位置保存到持有者,然後在用戶滾動時設置/取消設置,以便用戶可以從任何可見覆選框啓動。如果用戶檢查一個不同的,清除並重新設置10. – CmosBattery

+0

不,它不工作... – Jocheved

回答

0

你如果條件是錯誤的if (i < firstListItemPosition || i > lastListItemPosition)

將其更改爲

if (i > firstListItemPosition && i < lastListItemPosition)

+0

我試過這個... t是crashingi – Jocheved

0

我認爲第一件事,如果不檢查你想要的那些所有的複選框。

嘗試改變if語句 我> firstListItemPosition & &我< lastListItemPosition

我希望我理解你想要正確地做什麼。

+0

沒有兄弟它是不工作 – Jocheved

+0

那麼你能解釋一下你想做多一點嗎? – AppPhil

+0

我有一個列表視圖..和一個複選框。稱爲選擇10行...當用戶選擇該複選框...第一個10複選框需要選擇...我只是試着用你的代碼,但它崩潰了,然後我評論其他條件...在那個時候..沒有一次選擇..但當我向下滾動,回來..我看到第一個9被選中..但它只能在滾動後選擇。 – Jocheved