PagerAdapter - 单击项目按钮时项目索引错误
PagerAdapter - Wrong item index when clicked an item's button
我有一个扩展 PagerAdapter 的 class。所以我覆盖了这个功能:
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
final View view;
view = mLayoutInflater.inflate(R.layout.item, container, false);
setFavButton(view, list.get(position));
container.addView(view);
return view;
}
private void setFavButton(View view, Word word) {
btn_like = view.findViewById(R.id.btn_like);
btn_like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleFavButton(btn_like);
}
});
}
private void toggleFavButton(Button btn_like){
btn_like.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_like_red, 0, 0, 0);
}
因此,每当我单击某个项目上的按钮时,它就会更改另一个项目按钮的可绘制对象。我没有提到的所有其他按钮也会发生同样的情况。我单击按钮播放音频,但它播放的是链接到其他项目的音频。
为了避免这个问题,我没有在此适配器中创建一个全局 Button 变量 class,而是在 instantiateItem()[=10= 中创建了一个按钮实例]
我有一个扩展 PagerAdapter 的 class。所以我覆盖了这个功能:
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
final View view;
view = mLayoutInflater.inflate(R.layout.item, container, false);
setFavButton(view, list.get(position));
container.addView(view);
return view;
}
private void setFavButton(View view, Word word) {
btn_like = view.findViewById(R.id.btn_like);
btn_like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleFavButton(btn_like);
}
});
}
private void toggleFavButton(Button btn_like){
btn_like.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_like_red, 0, 0, 0);
}
因此,每当我单击某个项目上的按钮时,它就会更改另一个项目按钮的可绘制对象。我没有提到的所有其他按钮也会发生同样的情况。我单击按钮播放音频,但它播放的是链接到其他项目的音频。
为了避免这个问题,我没有在此适配器中创建一个全局 Button 变量 class,而是在 instantiateItem()[=10= 中创建了一个按钮实例]