为什么此ViewPager在OnClickListener中不起作用?

时间:2018-10-10 01:48:36

标签: android

为什么此ViewPager(位于ArrayAdapter中)将在OnClickListener外部而不在内部运行?

在活动中,此ViewPager将在OnClickListener的内部和外部均可使用。 但是,当在ArrayAdapter内实现时,它在OnClick方法内不起作用。

请问为什么会发生这种情况以及如何使其起作用?

这行不通:

public class AdapterClass extends ArrayAdapter<CardsModel> {

    private Context mContext;
    private ImageView mImageView;  
    private MyAdapter mProfileViewPagerAdapter;
    private ViewPager mPager;  

    public AdapterClass (@NonNull Context context, int resource, List<MyObjects> item){
        super(context, resource, item);
        mContext = context;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        final MyObjects myObjects = getItem(position);

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.my_layout, parent, false);
        }
        mImageView = (ImageView) convertView.findViewById(R.id.creator);
        mPager = convertView.findViewById(R.id.vpag);

        mImageView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            //INSIDE ONCLICKLISTENER  
                            profiler(myObjects.getImages());
                            mImageView.setVisibility(View.INVISIBLE);
                            mPager.setVisibility(View.VISIBLE);

                        }
                    });
        return convertView;

    }

    private void profiler(List<String> list) {
        //Strings are url from Firebase, loaded into Glide
        MyAdapter = new ProfileViewPagerAdapter(mContext, list);
        mPager.setAdapter(MyAdapter);
    }

}

这将起作用:

public class AdapterClass extends ArrayAdapter<CardsModel> {

   //....

        mImageView = (ImageView) convertView.findViewById(R.id.creator);
        mPager = convertView.findViewById(R.id.vpag);

        //OUTSIDE ONCLICKLISTENER
        profiler(myObjects.getImages());

        mImageView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {

                            mImageView.setVisibility(View.INVISIBLE);
                            mPager.setVisibility(View.VISIBLE);

                        }
                    });
        return convertView;

    }

0 个答案:

没有答案