2017-05-01 4 views
0

セクションの名前を取得しようとすると、そのセクションのアイテムのいずれかをタップします。セクションと私は、セクションの名前(かつて私は、任意の上でタップしないを見たい私の知識のための項目(複数可)今セクションアイテム:アイテムのタップでセクション名を取得

:私は私のUIデータを2つの部分に分かれてthisチュートリアル、以下のい

たとえば、アイテムの)

、私は、セクションのそれぞれは、だから、どのように私はそれを知っていますか5つの項目自体が含まれていると私は、セクションの第二

の4項目にタップされていると仮定しましょう5つのセクションを、持っています、あなたが見ることができるように、私はタップされたアイテムの名前を取得していますが、タップでもセクションの名前を取得したい(私はちょうどタップアイテム)?あなたのRecyclerViewDataAdapterで今

public class SectionListDataAdapter extends RecyclerView.Adapter<SectionListDataAdapter.SingleItemRowHolder> { 

    private ArrayList<SingleItemModel> itemsList; 
    private Context mContext; 
    private String mSectionName; 

    public SectionListDataAdapter(Context context, String sectionName, ArrayList<SingleItemModel> itemsList) { 
     mSectionName = sectionName; 
     this.itemsList = itemsList; 
     this.mContext = context; 
    } 

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

    @Override 
    public void onBindViewHolder(SingleItemRowHolder holder, int i) { 

     SingleItemModel singleItem = itemsList.get(i); 

     holder.tvTitle.setText(singleItem.getName()); 


     /* Glide.with(mContext) 
       .load(feedItem.getImageURL()) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .centerCrop() 
       .error(R.drawable.bg) 
       .into(feedListRowHolder.thumbView);*/ 
    } 

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

    public class SingleItemRowHolder extends RecyclerView.ViewHolder { 

     protected TextView tvTitle; 

     protected ImageView itemImage; 


     public SingleItemRowHolder(View view) { 
      super(view); 

      this.tvTitle = (TextView) view.findViewById(R.id.tvTitle); 
      this.itemImage = (ImageView) view.findViewById(R.id.itemImage); 


      view.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 


        Toast.makeText(v.getContext(), mSectionName +" : "+ tvTitle.getText(), Toast.LENGTH_SHORT).show(); 

       } 
      }); 


     } 

    } 

} 

単にあなたの内側SectionListDataAdapterを初期化する1行を変更します。

public class SingleItemRowHolder extends RecyclerView.ViewHolder { 

     .... 

     public SingleItemRowHolder(View view) { 
      super(view); 

      ..... 

      view.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Toast.makeText(v.getContext(), tvTitle.getText(), Toast.LENGTH_SHORT).show(); 

       } 
      }); 

     } 

答えて

1

あなたが提供されたリンクを見た後、あなたは、単に以下のようにSectionListAdapterでセクション名を渡し、保存する必要がありますonBindViewHolder以下:

public class RecyclerViewDataAdapter extends RecyclerView.Adapter<RecyclerViewDataAdapter.ItemRowHolder> { 

    private ArrayList<SectionDataModel> dataList; 
    private Context mContext; 

    public RecyclerViewDataAdapter(Context context, ArrayList<SectionDataModel> dataList) { 
     this.dataList = dataList; 
     this.mContext = context; 
    } 

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

    @Override 
    public void onBindViewHolder(ItemRowHolder itemRowHolder, int i) { 

     final String sectionName = dataList.get(i).getHeaderTitle(); 

     ArrayList singleSectionItems = dataList.get(i).getAllItemsInSection(); 

     itemRowHolder.itemTitle.setText(sectionName); 

     SectionListDataAdapter itemListDataAdapter = new SectionListDataAdapter(mContext, sectionName, singleSectionItems); 

     itemRowHolder.recycler_view_list.setHasFixedSize(true); 
     itemRowHolder.recycler_view_list.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false)); 
     itemRowHolder.recycler_view_list.setAdapter(itemListDataAdapter); 


     itemRowHolder.btnMore.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       Toast.makeText(v.getContext(), "click event on more, "+sectionName , Toast.LENGTH_SHORT).show(); 



      } 
     }); 


     /* Glide.with(mContext) 
       .load(feedItem.getImageURL()) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .centerCrop() 
       .error(R.drawable.bg) 
       .into(feedListRowHolder.thumbView);*/ 
    } 

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

    public class ItemRowHolder extends RecyclerView.ViewHolder { 

     protected TextView itemTitle; 

     protected RecyclerView recycler_view_list; 

     protected Button btnMore; 



     public ItemRowHolder(View view) { 
      super(view); 

      this.itemTitle = (TextView) view.findViewById(R.id.itemTitle); 
      this.recycler_view_list = (RecyclerView) view.findViewById(R.id.recycler_view_list); 
      this.btnMore= (Button) view.findViewById(R.id.btnMore); 


     } 

    } 

} 
関連する問題