2016-11-27 80 views
-2

我正在使用2種持有人類型(標題和項目)的RecyclerView來顯示活動的內容。每題的項目數量未定義。 就像這樣:RecyclerView:一個OnClickListener通過各種項目?

Title 
-Item 
-Item 

Title 
-Item 

Title 
-Item 
-Item 
-Item 

我正在尋找線索。如何在每個組(標題+項目)上設置一個OnClickListener,以便「OnClick灰色波浪效果」可以在不中斷的情況下瀏覽整個選定的組?

回答

1

我相信爲了達到這個目的,你需要把整個組放在一行內(Title + n Items)並以編程方式處理視圖。您可以通過父母佈局android:background="?android:attr/selectableItemBackground"來實現點擊時的連鎖反應(確保給它一個onClickListener或至少設置android:clickable="true")。

你可以做的是,每個標題視圖中,您可以在RecyclerView添加項NestedScrollView內,禁止使用recyclerView.setNestedScrollingEnabled(false)其滾動,所以它會給你同樣的結果。

+0

是的,但這樣做將不再回收的意見。 :( – Denis

+0

是的,整個組視圖都會被回收,但是標題下的每個項目都不會,如果每個組中沒有很多項目,則可以使用這個視圖 – MohanadMohie

+0

我有很多複合視圖...: (順便說一句,謝謝你的幫助;) – Denis

-1

如果你想OnClickListener在每個項目或把他們的LinearLayout,並給它你需要創建界面,在屏幕上實現它,你要顯示的recycleview適配器和適配器

public interface OnLevelClick { 

void onTitleClick(int pos); 
void onItem(int pos); 
} 
    OnLevelClick onLevelClick; 
    public LevelAdapters(Activity activity, ArrayList<Items> 
    arrayListItems, OnLevelClick onLevelClick) { 
    this.arrayListItems = arrayListItems; 
    this.onLevelClick = onLevelClick; 
    this.activity =activity; 

} 

    @Override 
    public void onBindViewHolder(final MyViewHolder holder, final int 
    position) { 
     holder.tvTitle.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
      onLevelClick.onTitleClick(position); 

      } 
      //// or 
       holder.linear.setOnClickListener(new 
      View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
      onLevelClick.onTitleClick(position); 

      } 

使用它的ID在活動實施

 Activity implements OnLevelClick{ 
    levelAdapter = new   
    LevelAdapters(getActivity(),savedLevelList,this); 
    reLevel.setAdapter(levelAdapter); 
      @Override 
    public void onNumClick(int pos) { 


    Log.d("Title",arraylist.get(po0s).getTitle()); 

    } 

}

相關問題