У меня есть следующий код, но я хотел бы объединить объекты 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);
}
}
Спасибо.