如何从Listview获取列表项的计数?

时间:2011-02-04 06:10:32

标签: android listview

我正在使用下面的代码来遍历我的列表,如果列表项可见,它正常工作。

如果List是可滚动的,那么使用此代码不会访问不可见的项目。如何遍历所有可见和不可见项目的列表项。

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());
}

2 个答案:

答案 0 :(得分:4)

以下是如何在Activity中获取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 =)

}

我希望这会有所帮助

答案 1 :(得分:3)

最近我做了这件事。 假设我想隐藏listItem上的按钮。然后在列表适配器的getView中,在全局向量中添加该按钮。如下。

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

这里viewCache是​​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. 

现在,您希望在单击其他按钮时看到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而是点击你的按钮ID,你将看不到/看到listItem的按钮。