在 Recyclerview 中实现 Onclick
Implement Onclick in Recyclerview
我在尝试在我的 Recyclerview 上实施 Onclick 方法时遇到了一些问题。我有一个显示图标和标题的列表。我知道如何从一个 activity 转到另一个,但我不知道应该把它放在哪里。这是我的适配器。我试图在图像图标上执行 Onclick,我是否应该像对删除图标一样执行此操作?谢谢!
ublic class MyAdapter extends RecyclerView.Adapter<MyAdapter.ExampleViewHolder> {
private ArrayList<listaMat> matArrayList;
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onItemClick(int position);
void onDeleteClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListener = listener;
}
public static class ExampleViewHolder extends RecyclerView.ViewHolder{
public ImageView mImageview;
public TextView mTextView;
public ImageView mDeleteImg;
public ExampleViewHolder(View itemView, OnItemClickListener listener) {
super(itemView);
mImageview = itemView.findViewById(R.id.img_list);
mTextView = itemView.findViewById(R.id.txt_list);
mDeleteImg = itemView.findViewById(R.id.img_delete);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
mDeleteImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onDeleteClick(position);
}
}
}
});
}
}
public MyAdapter(ArrayList<listaMat> listaMateri) {
matArrayList = listaMateri;
}
@NonNull
@Override
public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista_mat, parent, false);
ExampleViewHolder evh = new ExampleViewHolder(V, mListener);
return evh;
}
@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
listaMat currentItem = matArrayList.get(position);
holder.mImageview.setImageResource(currentItem.getmImageResource());
holder.mTextView.setText(currentItem.getmText());
}
@Override
public int getItemCount() {
return matArrayList.size();
}
}
如果你想在这里使用它
holder.mImageview.setOnClickListener(v -> {
Intent intent = new Intent(holder.mImageview.getContext(), MainDownload.class);
holder.mImageview.getContext().startActivity(intent);
}
如果你想将它与界面一起使用,请执行此操作
public class exampler extends AppCompatActivity , MyAdapter.OnItemClickListener {
}
在您使用 recyclerview 的 MainActivity 中使用此代码。您可以找到完整示例 here
mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
// Do Something
}
@Override
public void onDeleteClick(int position) {
// Do Something
}
});
@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
listaMat currentItem = matArrayList.get(position);
holder.mImageview.setImageResource(currentItem.getmImageResource());
holder.mTextView.setText(currentItem.getmText());
holder.mImageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
}
我在尝试在我的 Recyclerview 上实施 Onclick 方法时遇到了一些问题。我有一个显示图标和标题的列表。我知道如何从一个 activity 转到另一个,但我不知道应该把它放在哪里。这是我的适配器。我试图在图像图标上执行 Onclick,我是否应该像对删除图标一样执行此操作?谢谢!
ublic class MyAdapter extends RecyclerView.Adapter<MyAdapter.ExampleViewHolder> {
private ArrayList<listaMat> matArrayList;
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onItemClick(int position);
void onDeleteClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListener = listener;
}
public static class ExampleViewHolder extends RecyclerView.ViewHolder{
public ImageView mImageview;
public TextView mTextView;
public ImageView mDeleteImg;
public ExampleViewHolder(View itemView, OnItemClickListener listener) {
super(itemView);
mImageview = itemView.findViewById(R.id.img_list);
mTextView = itemView.findViewById(R.id.txt_list);
mDeleteImg = itemView.findViewById(R.id.img_delete);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
mDeleteImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onDeleteClick(position);
}
}
}
});
}
}
public MyAdapter(ArrayList<listaMat> listaMateri) {
matArrayList = listaMateri;
}
@NonNull
@Override
public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista_mat, parent, false);
ExampleViewHolder evh = new ExampleViewHolder(V, mListener);
return evh;
}
@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
listaMat currentItem = matArrayList.get(position);
holder.mImageview.setImageResource(currentItem.getmImageResource());
holder.mTextView.setText(currentItem.getmText());
}
@Override
public int getItemCount() {
return matArrayList.size();
}
}
如果你想在这里使用它
holder.mImageview.setOnClickListener(v -> { Intent intent = new Intent(holder.mImageview.getContext(), MainDownload.class); holder.mImageview.getContext().startActivity(intent); }
如果你想将它与界面一起使用,请执行此操作
public class exampler extends AppCompatActivity , MyAdapter.OnItemClickListener {
}
在您使用 recyclerview 的 MainActivity 中使用此代码。您可以找到完整示例 here
mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
// Do Something
}
@Override
public void onDeleteClick(int position) {
// Do Something
}
});
@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
listaMat currentItem = matArrayList.get(position);
holder.mImageview.setImageResource(currentItem.getmImageResource());
holder.mTextView.setText(currentItem.getmText());
holder.mImageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
}