我正在使用下面的代码来遍历我的列表,如果列表项可见,它正常工作。
如果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());
}
答案 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的按钮。