我有一个要求,我需要实现一个ListAdapter,它只能用于显示目的。
每个列表项行包含一个按钮。我编写了一个Adapter子类,它将BaseAdapater单独扩展为一个不在于活动状态的文件。
我的查询是我需要点击活动列表中列表项的按钮。
换句话说,我需要处理来自Adapter类外部的列表项的小部件。
我的代码如下:
public MyAdapter扩展BaseAdapter
{
}
公共类MyActivity扩展了活动{
ListView lv =(findViewById)R.id.list;
lv.setAdapter(new MyAdpater());
//这里我需要捕获小部件点击列表项目
任何人都可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
您可以简单地将自定义接口t从活动传递到适配器,并在以后调用它 在getView方法中单击每个按钮。 像这样:
public MyAdapter extends BaseAdapter
{
private OnListItemClick onClickListener;
public void setOnItemClickListener(OnListItemClick onClickListener)
{
this.onClickListener = onClickListener;
}
View getView(.....)
{
button = view.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
onClick(View view)
{
onClickListener.onListItemClick(position);
}
}
)
}
public interface OnListItemClick{
public void onListItemClick(int position);
}
}
答案 1 :(得分:0)
使用您的自定义扩展BaseAdapter并在单击按钮时添加用于调用的抽象方法,这里它将如何显示:
public abstract CustomAdapter extends BaseAdapter {
//custom constructors and other staff
public View getView(int position, ...) {
//custom view initialization
Button button = view.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
buttonClickEvent(position);
}
});
}
public abstract void buttonClickEvent(int position);
}
稍后在设置适配器之前的代码中,创建CustomAdapter的实例,您可以在其中实现所需的一切。 干杯!