针对PagerAdapter的重构建议实现了View.OnClickListener

时间:2018-12-30 22:26:07

标签: android android-pageradapter android-event

我有以下代码,但我想通过实现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,以输入到click事件函数中。我不明白为什么单击事件发生时位置会一直移动一个。

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);
}
}

谢谢。

0 个答案:

没有答案