我有一个ListView lv
,并且我Button delete
在 Listview 的底部有一个(按钮在 listview 之外)。有一个问题是我如何从列表视图内部处理按钮(例如更改背景或设置按钮的文本)。我有自己的适配器,我认为我必须处理按钮在public void getView(int pos, View convertView, ViewGroup parent)
功能上的变化。有人有什么主意吗?P/s:这个问题的重点是:“如何处理列表视图中的其他元素?”。欢迎任何建议!
问问题
203 次
3 回答
1
假设您不只是从Activity
orFragment
的onCreate
方法中保存对 Button 的引用,那么在内部getView
您将需要实现一个循环,沿着ViewParent
链向上搜索您想要的实际视图。它可能看起来像这样:
ViewParent nv = parent.getParent();
while(nv != null){
if(View.class.isInstance(nv)){
View button = findViewById(R.id.button_id);
if(button != null){
// FOUND IT!
// do something, then break;
break;
}
}
nv = nv.getParent();
}
没有编译或测试,但是......类似的东西应该做你想要的。有关详细信息,请参阅ViewParent.getParent()
文档。
于 2012-04-12T06:38:04.857 回答
1
在活动中,
Button delete = (Button) findViewById(R.id.delete);
CustomAdapter adapter = new CustomAdapter(delete);//add your argumente here
现在在适配器中,您可以为按钮设置 OnClickListener。
于 2012-04-12T06:39:42.847 回答
0
我猜您正在使用自定义阵列适配器。如果是这样,您可以将对按钮的引用传递给 arrayadapter 类。
我不确定这是否会让您编辑按钮。如果不是,您可以从 Activity 向 ArrayAdapter 发送一个处理程序。所以在活动中创建一个类似这样的处理程序:
protected Handler updateButtonHandler = new Handler() {
@Override
public void handleMessage(Message msg){
//Update button
}
};
然后在arrayadapter中有一个参考并且:
updateButtonHandler.sendEmptyMsg(0);
于 2012-04-12T06:34:52.447 回答