Android 如何使用onClick在RecycleServiceAdapter到details活动之间传递数据

Android 如何使用onClick在RecycleServiceAdapter到details活动之间传递数据,android,bundle,android-recyclerview,Android,Bundle,Android Recyclerview,我试图将此RecyclerAdapter之间的数据传递到DetailsActivity,即当用户单击每个项目时,获取项目位置,然后例如从recyclerView获取标题,并将其显示到MainRecyclerDetailsTextView,下面是我的尝试: public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> { private List

我试图将此
RecyclerAdapter
之间的数据传递到DetailsActivity,即当用户单击每个项目时,获取项目
位置
,然后例如从
recyclerView
获取标题,并将其显示到
MainRecyclerDetails
TextView
,下面是我的尝试:

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> {

    private List<FeedItem> feedItemList;
    private Context mContext;

    public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
        this.feedItemList = feedItemList;
        this.mContext = context;
    }

    @Override
    public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
        return new FeedListRowHolder(v);
    }

    @Override
    public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {

        FeedItem feedItem = feedItemList.get(i);
        Picasso.with(mContext).load(feedItem.getThumbnail())
                .error(R.drawable.placeholder)
                .placeholder(R.drawable.placeholder)
                .into(feedListRowHolder.thumbnail);
        feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
        feedListRowHolder.date.setText(Html.fromHtml(feedItem.getDate()));
        feedListRowHolder.tags.setText(Html.fromHtml(feedItem.getTags()));
        feedListRowHolder.thumbnail.setOnClickListener(clickListener);
        feedListRowHolder.title.setOnClickListener(clickListener);
        feedListRowHolder.date.setOnClickListener(clickListener);
        feedListRowHolder.tags.setOnClickListener(clickListener);
        feedListRowHolder.thumbnail.setTag(feedListRowHolder);
        feedListRowHolder.title.setTag(feedListRowHolder);
        feedListRowHolder.date.setTag(feedListRowHolder);
        feedListRowHolder.tags.setTag(feedListRowHolder);
    }

    @Override
    public int getItemCount() {
        return (null != feedItemList ? feedItemList.size() : 0);
    }

    View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FeedListRowHolder holder = (FeedListRowHolder) view.getTag();
            int position = holder.getAdapterPosition();
            FeedItem feedItem = feedItemList.get(position);
            Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show();

            Intent i = new Intent(mContext, MainRecyclerDetails.class);

            String getrec = feedItem.getTitle();
            Bundle bundle = new Bundle();
            bundle.putString("title", getrec);
            i.putExtras(bundle);
            startActivity(i);


        }
    };


    class FeedListRowHolder extends RecyclerView.ViewHolder {

        protected ImageView thumbnail;
        protected TextView title;
        protected TextView date;
        protected TextView tags;

        public FeedListRowHolder(View view) {
            super(view);
            this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
            this.title = (TextView) view.findViewById(R.id.title);
            this.date = (TextView) view.findViewById(R.id.date);
            this.tags = (TextView) view.findViewById(R.id.tagsItems);
        }
    }

}
但是,它不起作用

我做错了什么


干杯

您可以通过这种方式实现

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> {

    private List<FeedItem> feedItemList;
    private Context mContext;

    public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
        this.feedItemList = feedItemList;
        this.mContext = context;
    }

    @Override
    public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
        return new FeedListRowHolder(v);
    }

    @Override
    public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
        FeedItem feedItem = feedItemList.get(i);
        Picasso.with(mContext).load(feedItem.getThumbnail())
                .error(R.drawable.placeholder)
                .placeholder(R.drawable.placeholder)
                .into(feedListRowHolder.thumbnail);
        feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
        feedListRowHolder.date.setText(Html.fromHtml(feedItem.getDate()));
        feedListRowHolder.tags.setText(Html.fromHtml(feedItem.getTags()));
    }

    @Override
    public int getItemCount() {
        return (null != feedItemList ? feedItemList.size() : 0);
    }

    class FeedListRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        protected ImageView thumbnail;
        protected TextView title;
        protected TextView date;
        protected TextView tags;

        public FeedListRowHolder(View view) {
            super(view);
            this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
            this.title = (TextView) view.findViewById(R.id.title);
            this.date = (TextView) view.findViewById(R.id.date);
            this.tags = (TextView) view.findViewById(R.id.tagsItems);

            thumbnail.setOnClickListener(this);
            title.setOnClickListener(this);
            date.setOnClickListener(this);
            tags.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            int position = getAdapterPosition();
            FeedItem feedItem = feedItemList.get(position);
            Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show();

            Intent i = new Intent(mContext, MainRecyclerDetails.class);
            String getrec = feedItem.getTitle();
            i.putExtra("title", getrec);
            mContext.startActivity(i);
        }
    }

}

你的
OnClickListener
在哪里?检查是否helps@Blackbelt-这一个?:
View.OnClickListener clickListener=newview.OnClickListener()
我完全错过了。会发生什么?fDetailsActivity和main recyclerdetails是同一个活动吗?@Blackbelt-不是,我只是编辑了这个问题并纠正了这个错误。nx steven,但这行仍然是startActivity(i);不行,我应该用另一种方式传递数据吗?我只需要显示该活动的每个项目的详细信息…您可以尝试在Intent对象中使用putExtra方法,请参阅我编辑的代码
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.FeedListRowHolder> {

    private List<FeedItem> feedItemList;
    private Context mContext;

    public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
        this.feedItemList = feedItemList;
        this.mContext = context;
    }

    @Override
    public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
        return new FeedListRowHolder(v);
    }

    @Override
    public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
        FeedItem feedItem = feedItemList.get(i);
        Picasso.with(mContext).load(feedItem.getThumbnail())
                .error(R.drawable.placeholder)
                .placeholder(R.drawable.placeholder)
                .into(feedListRowHolder.thumbnail);
        feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
        feedListRowHolder.date.setText(Html.fromHtml(feedItem.getDate()));
        feedListRowHolder.tags.setText(Html.fromHtml(feedItem.getTags()));
    }

    @Override
    public int getItemCount() {
        return (null != feedItemList ? feedItemList.size() : 0);
    }

    class FeedListRowHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        protected ImageView thumbnail;
        protected TextView title;
        protected TextView date;
        protected TextView tags;

        public FeedListRowHolder(View view) {
            super(view);
            this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
            this.title = (TextView) view.findViewById(R.id.title);
            this.date = (TextView) view.findViewById(R.id.date);
            this.tags = (TextView) view.findViewById(R.id.tagsItems);

            thumbnail.setOnClickListener(this);
            title.setOnClickListener(this);
            date.setOnClickListener(this);
            tags.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            int position = getAdapterPosition();
            FeedItem feedItem = feedItemList.get(position);
            Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show();

            Intent i = new Intent(mContext, MainRecyclerDetails.class);
            String getrec = feedItem.getTitle();
            i.putExtra("title", getrec);
            mContext.startActivity(i);
        }
    }

}
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extra = getIntent().getExtras();
    String title = extra.getString("title");
}