2014-09-13 31 views
6

ListView ürününün tüm öğelerini nasıl alabilirim?
Çocuk sahibi olmak için yöntemler var ancak ListView öğesinde tüm çocukların toplanmasını sağlayan bir yöntem bulamadım.Tüm liste Görünümü (satırlar)

Güncelleştirme: Bunun yerine ListView öğeye (satır) ihtiyacım olduğunu öğrendim. Bunu nasıl başarabilirim?
Yaptığım şey, seçilen ListView öğesinin tüm öğelerle karşılaştırılmasıdır.

+0

Bunu neden yaptığınızdan tam olarak emin değilsiniz, ancak tüm verileri doğrudan Bağdaştırıcıdan çekmek daha iyi olmaz mı? ListView'den görünümler çekmek yerine. –

cevap

4

Sen

for (int i=0;i<adapter.getCount();i++){ 
    adapter.getItem(i); 
} 

Güncelleme aşağıdaki gibi yineleme yoluyla liste adaptöründen tüm liste öğesini olsun:

for (int i=0;i<adapter.getCount();i++){ 
    if(adapter.get(selectedIndex)==adapter.getItem(i)){ 
     // TODO : write code here item match 
     break; // after match is good practice to break loop instead compare rest of item even match 
    } 
} 
+0

Lütfen güncellenmiş soruya bakın. – Nitish

1

Mayıs: Tüm öğeler aşağıda liste adaptörüyle dizini kullanarak belirli öğeyi karşılaştırabilirsiniz Böyle bir şey mi arıyorsunuz? Çocuk görüşlerini alabileceğiniz rootView erişiminiz olması gerekir. onItemSelected yalnızca tıklanan konumun kök görünümünü verdiği için kullanılır.

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) { 
ImageView imgView = view.findViewById(R.id.myImageView);//your imageview that is inflated inside getView() of adapter 
//similarly for other views 
} 
3

bu yöntemi kullanın tüm anlayış ve liste görünümü dışında görüş görünüm elde etmek:

for (int i = 0 ; i < listView.getCount() ; i++){ 
    View v = getViewByPosition(i,listView); 
} 

public View getViewByPosition(int position, ListView listView) { 
    final int firstListItemPosition = listView.getFirstVisiblePosition(); 
    final int lastListItemPosition =firstListItemPosition + listView.getChildCount() - 1; 

    if (position < firstListItemPosition || position > lastListItemPosition) { 
     return listView.getAdapter().getView(position, listView.getChildAt(position), listView); 
    } else { 
     final int childIndex = position - firstListItemPosition; 
     return listView.getChildAt(childIndex); 
    } 
} 
eğer sanırım
1

ListView da ürün yapabileceğini ViewGroup tiptedir aşağıdaki

ArrayList<View> children = new ArrayList<View>(); 
for (int i = item.getChildCount() - 1 ; i>=0; i--) { 
    children.add(item.getChildAt(i)); 
} 
+0

bu kabul edilen cevap olmalıdır. – josh123a123