2011-02-04 7 views
7

以下のコードを使ってリストをトラバースしていますが、リスト項目が表示されていれば問題ありません。Listviewからリストアイテムの数を取得する方法は?

リストがスクロール可能な場合、非可視アイテムはこのコードを使用してアクセスしていません。どのように表示されるすべてのリスト項目をトラバースする+非表示項目。

for(int i=0;i<list.getCount;i++) 
{ 
    View v = list.getChildAt(i); 
    TextView tv= (TextView) v.findViewById(R.id.item); 
    Log.d("","ListItem :"+tv.getText()); 
} 

答えて

3

最近、私はこの事をしたのに役立ちます願っています。 listItemのボタンを非表示にしたいとします。次に、リスト・アダプターのgetViewで、そのボタンをグローバル・ベクトルに追加します。以下のように。ここで

Button del_btn = viewCache.getFrame(); 
view_vec.add(del_btn); 

viewCacheは、以下のようにsumthingさViewCacheクラスのオブジェクトである -

class ViewCache 
    {   

     private View baseView;  
     private Button button; 


     public ViewCache(View baseView) 
     {  
      this.baseView = baseView; 
     } 

     public Button getButton() { 
      if(button == null) { 
       button = (Button) baseView.findViewById(R.id.DeleteChatFrndBtn); 
      } 
      return button; 
     } 
    } 


//it is necessary sometimes because otherwise in some cases the list scroll is slow. 

今、あなたは他のいくつかのボタンをonClicking見えるlistItemののボタンが好きです。そして、以下のようなコード -

public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch(v.getId()) { 

     case R.id.EditChatFrndBtn: 
      length = view_vec.size(); 
      for(int i = 0; i < length; i++) { 

       Button btn = (Button) view_vec.elementAt(i); 
       btn.setVisibility(View.VISIBLE); 

      } 
      doneBtn.setVisibility(View.VISIBLE); 
      editBtn.setVisibility(View.INVISIBLE); 
      break; 
    } 
} 

代わりR.id.EditChatFrndBtnのは、あなたが目に見えない/見えlistItemののボタン意志のクリックであなたのボタンIDを置きます。

+0

こんにちは、私は、私のヘッダーにある別のボタンをクリックすると、すべてのリスト項目にshowボタンが必要です。あなたが使ったこのビューベクトルとgetFrame()は何ですか? – Nitish

+0

作成時にすべてのボタン(ビュー)を追跡する必要があります。オットー後は、各リストアイテムのボタンビューに別々にアクセスすることはできません。すべてのボタンビューが作成されると、ビューベクトルに挿入されます。このベクトルは、すべてのリストアイテムボタンビューを追跡します。 – Debarati

+0

これを取得し、Viewcacheはアダプタのビューの所有者です。私は正しい? – Nitish

4

ここでは、アクティビティでListViewを取得してそれをトラバースする方法を示します。

ListView myList = getListView(); 
int count = myList.getCount(); 
for (int i = 0; i < count; i++) 
{ 
    ViewGroup row = (ViewGroup) myList.getChildAt(i); 
    TextView tvTest = (TextView) row.findviewbyid(R.id.tvTestID); 
    // Get your controls from this ViewGroup and perform your task on them =) 

} 

私は、これは

+0

あなたは私に説明することができますか?ViewまたはViewGroupからリストの子を取得する違いは何ですか? – ADIT

+5

nullpointer例外を与える、 – ADIT

関連する問題