Предложение по рефакторингу для PagerAdapter реализует View.OnClickListener - PullRequest
0 голосов
/ 31 декабря 2018

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

Спасибо.

...