2015-08-19 24 views
2

我解析片段中的Json數據。爲了得到這個Json數據的視圖,我使用了RecycleView。在這個片段中,我展示了一些帖子的簡短細節。我希望當用戶點擊recycleView時,它會轉到另一個活動並顯示此帖子的詳細信息。如何使我的RecycleView可點擊?如何使RecycleView在片段中可點擊?

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_recent_post, container, false); 
     recentpostRecycleView = (RecyclerView) view.findViewById(R.id.recent_posts); 
     recentpostRecycleView.setLayoutManager(new LinearLayoutManager(getActivity())); 
     recentPostAdapter = new RecentPostAdapter(getActivity()); 
     recentpostRecycleView.setAdapter(recentPostAdapter); 
     sendJsonRequest(); 
     return view; 

    } 

我RecycleView ScreenShoot:

enter image description here

回答

2

你不應該讓RecyclerView點擊,但它的卡。只需將android:clickable="true" 添加到卡片佈局,然後將ClickListener添加到ChildViews。如果你與奮鬥,slidenerd有大約RecyclerViews一個很好的教程:https://www.youtube.com/watch?v=zE1E1HOK_E4

1

看一看這個答案,我覺得最好的描述: https://stackoverflow.com/a/24471410/5243853

我目前使用類似的解決方案來處理項目點擊的RecycleView,但我在適配器的onBindViewHolder方法中設置了監聽器。此外,您不僅可以將onClickListener設置爲整個項目視圖,還可以將其設置爲元素(如果需要)。

在你的適配器實現,你可以有:

@Override 
    public void onBindViewHolder(ViewHolder viewHolder, int position) { 
     Good good = getItem(position); 
     Picasso.with(mContext) 
       .load(good.mainImages) 
       .placeholder(R.drawable.picasso_placeholder_normal) 
       .into(viewHolder.mImage, null); 
     viewHolder.mTitle.setText(good.name); 
     viewHolder.mCount.setText(good.count); 
     viewHolder.parent.setOnClickListener(viewHolder); } 

而且內部類適配器看起來是這樣的:

class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     private View parent; 
     private ImageView mImage; 
     private TextView mTitle; 
     private TextView mCount; 

     public ViewHolder(View parentView, ImageView image, TextView title, TextView count) { 
      super(parentView); 
      parent = parentView; 
      mImage = image; 
      mTitle = title; 
      mCount = count; 
     } 

     @Override 
     public void onClick(View v) { 
      int position = getAdapterPosition(); 
      Good good = getItem(position); 
      if (good != null) { 
       //requestProductCard(good.id, v); //do your stuff here 
      } 
     } 
    } 
+0

我發現從slidenard一個解決方案與addOnItemTouchListener。它允許添加onLongTouch。好一個。 – Yeahia2508

相關問題