RecyclerView:一个OnClickListener上的各种项目?

时间:2016-11-27 12:35:06

标签: android android-recyclerview onclicklistener

我正在使用带有2种持有人类型(标题和项目)的RecyclerView来显示活动的内容。每个标题的项目数量未定义。 就像这样:

Title
-Item
-Item

Title
-Item

Title
-Item
-Item
-Item

我正在寻找线索。如何在每个组(标题+项目)上设置OnClickListener,以便“OnClick灰色波浪效果”浏览整个选定的组而不会中断?

2 个答案:

答案 0 :(得分:1)

我相信为了达到这个目的,你需要将整个组放在一行(Title + n Items)中并以编程方式处理视图。您可以在点击时为父级布局android:background="?android:attr/selectableItemBackground"提供涟漪效果(请确保为onClickListener或至少设置android:clickable="true")。

您可以做的是,在每个标题视图中,您可以在RecyclerView内的NestedScrollView中添加项目并使用recyclerView.setNestedScrollingEnabled(false)禁用其滚动,这样它就会为您提供同样的结果。

答案 1 :(得分:-1)

如果你想在每个项目中使用OnClickListener或将它们放在Linearlayout中并给它id,你需要创建界面并在你想要显示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);

           }

在活动工具

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

    }

}