📅  最后修改于: 2023-12-03 15:21:32.080000             🧑  作者: Mango
在 Android 开发中,经常会用到 RecyclerView 控件来展示列表、网格等内容。在 RecyclerView 中,我们获取某个 item 的位置通常会使用 holder.getAdapterPosition()
方法来获取,但是需要注意不要把位置当作固定的,因为这可能会导致以下问题:
一个比较好的做法是,仅在需要获取位置时立即使用 holder.getAdapterPosition()
方法,并在稍后需要查询位置时再重新调用该方法获取当前的真实位置。
以下代码片段展示了一个简单的示例,演示如何使用 holder.getAdapterPosition()
方法来获取 item 的位置:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<String> mData;
public static class MyViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public MyViewHolder(View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.tv_item);
}
}
public MyAdapter(List<String> data) {
mData = data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.mTextView.setText(mData.get(position));
// 获取当前 item 的位置
int adapterPosition = holder.getAdapterPosition();
// 在需要使用该位置时再进行调用
Log.d("MyAdapter", "当前位置:" + adapterPosition);
}
@Override
public int getItemCount() {
return mData.size();
}
}