gpt4 book ai didi

Android:RecyclerView 点击监听器未进入适配器

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:13 24 4
gpt4 key购买 nike

我有一个包含 600 个项目的数组。我已将所有数组项放在 RecyclerView 中,它们滚动得很好。但是,当我尝试访问 onClick 监听器时,它没有被调用。我还尝试在我的 ViewHolder 类中实现 View.OnClickListener 和重写 onClick,但它不起作用。

我想在用户单击 View 中的某个项目时 Toast 列表中被单击项目的数据

适配器代码是

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>  {

public static class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
private String mItem;
private TextView mTextView;

public ViewHolder(View view) {
super(view);
view.setOnClickListener(this);
mTextView = (TextView) view.findViewById(R.id.item_title);
}

public void setItem(String item) {
mItem = item;
mTextView.setText(item);
}

@Override
public void onClick(View view) {
Log.d("TAG", "onClick " + getPosition() + " " + mItem);
}
}

private String[] mDataset;

public MyAdapter(String[] dataset) {
mDataset = dataset;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.setItem(mDataset[position]);
}

@Override
public int getItemCount() {
return mDataset.length;
}
}

最佳答案

Try this..

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

public static class ViewHolder extends RecyclerView.ViewHolder
{
private String mItem;
private TextView mTextView;

public ViewHolder(View view) {
super(view);
mTextView = (TextView) view.findViewById(R.id.item_title);


}

public void setItem(String item) {
mItem = item;
mTextView.setText(item);
}

private String[] mDataset;
Context context;
public MyAdapter(Context context,String[] dataset) {
this.context=context;
mDataset = dataset;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

holder.setOnClickListener(new ItemClicklistener(position);
holder.setItem(mDataset[position]);
}

@Override
public int getItemCount() {
return mDataset.length;
}


class ItemClicklistener implements View.OnClickListener {
private int position;

ItemClicklistener(int position) {

this.position = position;
}

@Override
public void onClick(View view) {
Toast.makeText(context,"OnClick :"+position,Toast.LENGTH_SHORT).show();


}
}


}

关于Android:RecyclerView 点击监听器未进入适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33771580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com