为什么此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;
}