android - PagerAdapter 实现 View.OnClickListener 的重构建议
问题描述
我有以下代码,但我想通过实现 View.OnClickListener 将 View.OnClickListener 对象合并到一个函数中。但是当点击事件发生时页面的位置不断变化。在重构之前,我的代码如下所示:
public class APagerAdapter extends PagerAdapter{
private OnQuoteItemClickListener quoteItemClickListener;
public APagerAdapter(ArrayList<Quote> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
quote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView v = (TextView) view;
if (quoteItemClickListener != null) {
quoteItemClickListener.onQuoteClick(position);
}
startAction(v, v);
}
});
container.addView(layout);
return layout;
}
public void setQuoteItemClickListener(OnQuoteItemClickListener listener){
this.quoteItemClickListener = listener;
}
public interface OnQuoteClickListener{
void onQuoteClick(int pos);
}
}
我重构的代码。当点击事件发生时,项目的位置会发生变化。我将位置的全局变量设置为 int i 以输入点击事件函数。我不明白为什么当点击事件发生时位置不断移动。
public class APagerAdapter extends PagerAdapter implements View.OnClickListener{
private OnQuoteItemClickListener quoteItemClickListener;
int i = 0;
public APagerAdapter(ArrayList<Quote> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
i = position;
quote.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getTag().equals("quote")){
startAction(v, i);
}
}
public void setQuoteItemClickListener(OnQuoteItemClickListener listener){
this.quoteItemClickListener = listener;
}
public interface OnQuoteItemClickListener{
void onQuoteClick(int pos);
}
}
谢谢。
解决方案
推荐阅读
- git - 尝试运行“颤振升级”时出错
- python - 如何从文件夹中选择带有编号扩展名的文件?
- swift - 如何跨场景传递价值观
- javascript - 如何使用键打开并专注于 JQuery 中已清除的输入元素?
- c# - 在 JSON.NET 中序列化集合不起作用
- python - 如何在 Python 中格式化和打印在同一行
- json - Datatables.net - 无效的 Json 响应
- java - 如何在Android中特定时间后显示通知
- php - Laravel 在控制器中嵌套子视图的问题
- gradle - 您如何定义变量以排除 build.gradle.kts 中的多个传递依赖项