2015-10-04 20 views
0

我试图将此RecyclerAdapter之间的数据传递给DetailsActivity,此时用户单击每个项目,获取项目position,然后例如获取标题recyclerView并显示到MainRecyclerDetailsTextView,这里是我的尝试:如何将RecyclerViewAdapter之间的数据传递到具有onClick的详细信息活动

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); 
     } 
    } 

} 

得到它在DetailsActivity

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

但是,它不工作。

我在做什么错?

干杯!

+0

哪里是你'OnClickListener'实现这样

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); } } } 

?检查是否[this](http://stackoverflow.com/questions/29107110/listview-getitematpositioni-equivalent-in-recyclerview/29107243#29107243)帮助 – Blackbelt

+0

@Blackbelt - 这一个?:'View.OnClickListener clickListener = new View。 OnClickListener()' – mandev

+0

我完全错过了。怎么了 ?是fDetailsActivity和MainRecyclerDetails相同的活动? – Blackbelt

回答

2

您可以在MainRecyclerDetails活动

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

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

nx史蒂文,但仍然这一行startActivity(i);不起作用,我应该用另一种方式来传递数据吗?我只需要显示该活动的每个项目的详细信息... – mandev

+0

你可以尝试在意图对象putExtra方法,看到我编辑的代码 – steven274

+0

是的,谢谢哥们;)我在找什么 – mandev

相关问题