2017-06-06 82 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