-1

我有一个ListView lv,并且我Button delete在 Listview 的底部有一个(按钮在 listview 之外)。有一个问题是我如何从列表视图内部处理按钮(例如更改背景或设置按钮的文本)。我有自己的适配器,我认为我必须处理按钮在public void getView(int pos, View convertView, ViewGroup parent)功能上的变化。有人有什么主意吗?P/s:这个问题的重点是:“如何处理列表视图中的其他元素?”。欢迎任何建议!

4

3 回答 3

1

假设您不只是从ActivityorFragmentonCreate方法中保存对 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 回答