8

我已经有一个onitemclickListener并且它有效,

list.setOnItemClickListener( new OnItemClickListener()
{
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
         ...
     }
});

但是,我需要从不同的按钮实现相同的功能。

如何引用onitemclickListener我的列表中已经存在的内容?

我不想复制所有代码并再次使用它,因为它大约有 500 行。

4

6 回答 6

19

performItemClick可以做到这一点。

list.performItemClick(list.getChildAt(pos), pos, list.getItemIdAtPosition(pos));
于 2014-03-31T15:01:20.540 回答
3

在单独的方法中重构您的代码,并从 bot 和 调用该onItemClick方法onClick

如果您的代码需要所选项目,请将其作为参数从onItemClick. 在您的按钮onClick中,您必须查看ListView.getCheckedItemIds,因为列表视图一次可以选择多个项目,并根据任何标准将您的逻辑应用于您想要的项目。

于 2013-01-29T08:30:51.330 回答
0

创建你自己的OnItemClickListener类,使用你已经编写的代码,并在你的调用中使用它list.setOnItemClickListener(new myOnClickListener())

于 2013-01-29T08:29:57.153 回答
0

需要创建一个 OnItemClickListener 对象并在需要时使用它:

OnItemClickListener listener =  new OnItemClickListener(){
                 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
                 {
                 ...
                 }
}

每当您需要时:

list.setOnItemClickListener(listener);
于 2013-01-29T08:31:03.680 回答
0

在布局 xml 中注册您的 onItemClickListener 并在您的活动中创建一个通用方法。

于 2013-01-29T08:33:22.633 回答
0

我看到了两种解决方案,您可以编写一个通用函数并在单击任一按钮时调用此函数。另一种解决方案是在单击第二个按钮时查看第一个按钮,然后调用 performClick 函数。

public void Click2()
{
 Button b = (Button)findViewById(R.id.button1);

 b.performClick();

}       
于 2013-01-29T08:41:07.583 回答