Java viewpager项目位置错误pageradapter
Java viewpager项目位置错误pageradapter,java,android,Java,Android,viewpager的PagerAdapter上的实例化item将错误的项目位置发送到意图调用的活动。当我点击图片1时,它会发送图片2的信息,当我点击图片2时,它会发送图片3的信息,依此类推。接收者活动收到的图像和标题与单击的发送者活动不符。我使用floatingActionButton和onclickListener来检测点击 @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, final
viewpager
的PagerAdapter
上的实例化item
将错误的项目位置发送到意图调用的活动。当我点击图片1时,它会发送图片2的信息,当我点击图片2时,它会发送图片3的信息,依此类推。接收者活动收到的图像和标题与单击的发送者活动不符。我使用floatingActionButton
和onclickListener
来检测点击
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {
LayoutInflater inflater = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View slideLayout = inflater.inflate(R.layout.slide_item, null);
final ImageView slideImg = slideLayout.findViewById(R.id.slide_img);
final TextView slideText = slideLayout.findViewById(R.id.slide_title);
final FloatingActionButton fab = slideLayout.findViewById(R.id.floatingActionButton);
slideImg.setImageResource(mList.get(position).getImage());
slideText.setText(mList.get(position).getTitle());
slideTitle = slideText.getText().toString();
thumbnail = mList.get(position).getImage();
container.addView(slideLayout);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, MovieDetailActivity.class);
intent.putExtra("title", slideTitle);
intent.putExtra("imgURL", thumbnail);
mContext.startActivity(intent);
}
});
return slideLayout;
}
重写此方法以获取片段的当前位置。使用此位置可获取有关当前单击的信息
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
Log.i(TAG, "setPrimaryItem: " + position);
super.setPrimaryItem(container, position, object);
}
Vishrut Mavani的代码工作得很好 最后的代码是这样的
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View slideLayout = inflater.inflate(R.layout.slide_item, null);
final ImageView slideImg = slideLayout.findViewById(R.id.slide_img);
final TextView slideText = slideLayout.findViewById(R.id.slide_title);
final FloatingActionButton fab = slideLayout.findViewById(R.id.floatingActionButton);
slideImg.setImageResource(mList.get(position).getImage());
slideText.setText(mList.get(position).getTitle());
container.addView(slideLayout);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, MovieDetailActivity.class);
intent.putExtra("title", slideTitle);
intent.putExtra("imgURL", thumbnail);
mContext.startActivity(intent);
}
});
return slideLayout;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View)object);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object){
Log.i(TAG, "setPrimaryItem_che: " + position);
super.setPrimaryItem(container, position, object);
slideTitle = mList.get(position).getTitle();
thumbnail = mList.get(position).getImage();
}