点击RecyclerView和cardView

问题描述 投票:0回答:1

我有一个带有相册项目照片的RecyclerView和CardView项目。

有谁能帮我在每个项目上做onClick动作,即,当点击card1时将导航我到activity1,而当点击card2时将导航我到另一个活动。

请帮帮我吧

我读了所有的帖子,我没有找到解决我的问题。

谢谢。

我在java上的代码。

public class AlbumsAdapter extends RecyclerView.Adapter {

private Context mContext;
private List<Album> albumList;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView title, count;
    public ImageView thumbnail, overflow;

    public MyViewHolder(View view) {
        super(view);
        title = (TextView) view.findViewById(R.id.title);
        count = (TextView) view.findViewById(R.id.count);
        thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
        overflow = (ImageView) view.findViewById(R.id.overflow);

        itemView.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View p1)
                {
                    int pos=getAdapterPosition();
                    if(pos != RecyclerView.NO_POSITION){

                        Album clickedDataBase=albumList.get(1);

                        //Toast.makeText(getApplication(), "Clicked Laugh Vote", Toast.LENGTH_SHORT).Show();

                        Toast.makeText(itemView.getContext(), "view clicked", Toast.LENGTH_SHORT).show();
                    }

                }
            });



    }
}


public AlbumsAdapter(Context mContext, List<Album> albumList) {
    this.mContext = mContext;
    this.albumList = albumList;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.album_card, parent, false);

    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    Album album = albumList.get(position);
    holder.title.setText(album.getName());
    holder.count.setText(album.getNumOfSongs() + " songs");

    // loading album cover using Glide library
    Glide.with(mContext).load(album.getThumbnail()).into(holder.thumbnail);

    holder.overflow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showPopupMenu(holder.overflow);
        }
    });
}

/**
 * Showing popup menu when tapping on 3 dots
 */
private void showPopupMenu(View view) {
    // inflate menu
    PopupMenu popup = new PopupMenu(mContext, view);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.menu_album, popup.getMenu());
    popup.setOnMenuItemClickListener(new MyMenuItemClickListener());
    popup.show();
}

/**
 * Click listener for popup menu items
 */
class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {

    public MyMenuItemClickListener() {
    }

    @Override
    public boolean onMenuItemClick(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case R.id.action_add_favourite:
                Toast.makeText(mContext, "Add to favourite", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.action_play_next:
                Toast.makeText(mContext, "Play next", Toast.LENGTH_SHORT).show();
                return true;
            default:
        }
        return false;
    }
}

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

}

请在此输入图片描述

android android-recyclerview adapter onclicklistener android-cardview
1个回答
0
投票

最好的方法是在adapter中设置itemview上的click监听器,然后取其位置并为其写一个开关案例。

 public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView name;
    MyButton BtnRequest;
    CircularImageView profileImage;
    ViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.UserName);
        BtnRequest = itemView.findViewById(R.id.BtnRequest);
        profileImage = itemView.findViewById(R.id.profileImage);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
    }
}

然后在你的主活动中实现它

public class UserListCanReq extends AppCompatActivity implements yourAdapters.ItemClickListener

然后在活动中覆盖你的方法。

 @Override
public void onItemClick(View view, int position) {
    //Toast.makeText(this, "You clicked " + adapter.getItem(position) + " on row number " + position, Toast.LENGTH_SHORT).show();

   switch(adapter.getItem(position)){
     case 0:
        Album album = albumlist.get(position);
       Intent intent = new Intent(AdminActivity.this, DatesActivity.class);
       intent.putExtra("userid",album.getId());
       startActivity(intent);
     break;
     case 1:
       Album album= albumlist.get(position);
       Intent intent = new Intent(AdminActivity.this, DatesActivity.class);
       intent.putExtra("userid",album.getId());
       startActivity(intent);
     break;
   }


}
© www.soinside.com 2019 - 2024. All rights reserved.