gpt4 book ai didi

java - 在 Recyclerview 适配器中实现 onClick

转载 作者:行者123 更新时间:2023-12-04 03:19:01 26 4
gpt4 key购买 nike

  1. 我想知道如何为我的每个项目实现 onClick网格(使用 Recycler View 和 Card view)来启动一个新的activity.Below 是我的 ViewHolder 类和 RecyclerView Adapter类

    这是我的 RecyclerView 适配器类

    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.nfc.Tag;
    import android.nfc.TagLostException;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Toast;

    import java.util.List;

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {

    private List<ItemObject> itemList;
    private Context context;

    public RecyclerViewAdapter(Context context, List<ItemObject> itemList) {
    this.itemList = itemList;
    this.context = context;
    }

    @Override
    public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {

    View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_list, null);
    RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
    return rcv;
    }

    @Override
    public void onBindViewHolder(RecyclerViewHolders holder, final int position) {
    holder.countryName.setText(itemList.get(position).getName());
    holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
    holder.countryPhoto.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    Toast.makeText(view.getContext(),"This is Maps",Toast.LENGTH_SHORT).show();

    }
    });
    }

    @Override
    public int getItemCount() {
    return this.itemList.size();
    }
    }

    //This is my Recycler View Holder Class


    import android.content.Intent;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;

    public class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener {

    public TextView countryName;
    public ImageView countryPhoto;

    public RecyclerViewHolders(View itemView) {
    super(itemView);
    itemView.setOnClickListener(this);
    countryName = (TextView) itemView.findViewById(R.id.country_name);
    countryPhoto = (ImageView) itemView.findViewById(R.id.country_photo);
    }

    @Override
    public void onClick(View view) {
    Toast.makeText(view.getContext(), "Clicked Country Position = " + getPosition(), Toast.LENGTH_SHORT).show();


    }
    }

最佳答案

我使用接口(interface)作为回调来处理这种情况。

首先,我在 Adapter 中创建了一个接口(interface)类。

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {

private List<ItemObject> itemList;
private Context context;
private ItemClickListener mItemClickListener;

public RecyclerViewAdapter(Context context, List<ItemObject> itemList) {
this.itemList = itemList;
this.context = context;
}

@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {

View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_list, null);
RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
return rcv;
}

public void addItemClickListener(ItemClickListener listener) {
mItemClickListener = listener;
}

@Override
public void onBindViewHolder(RecyclerViewHolders holder, final int position) {
holder.countryName.setText(itemList.get(position).getName());
holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
holder.countryPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(position);
}
}
});
}

@Override
public int getItemCount() {
return this.itemList.size();
}

//Define your Interface method here
public interface ItemClickListener {
void onItemClick(int position);
}
}

然后,让 Activity 或 Fragment 实现该接口(interface)并添加监听器。

public class MyFragment extends Fragment
implements RecyclerViewAdapter.ItemClickListener {

private List<ItemObject> mItemList;
...
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
...
//Make sure mItemList not NULL
RecyclerViewAdapter adapter = new RecyclerViewAdapter(getContext(), mItemList);
//Add Item Click listener
adapter.addItemClickListener(this);
}


@Override
public void onItemClick(int position) {
Toast.makeText(.getContext(),"Click on item: " + position,Toast.LENGTH_SHORT).show();
}
}

希望这会有所帮助!

关于java - 在 Recyclerview 适配器中实现 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551313/

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