2016-08-07 28 views
0

RecyclerViewで選択した項目のプロパティを変更できますが、古い選択項目の選択項目を削除します。RecyclerViewで単一選択を実装する方法は?

fragmentViewPagerAdapter.addFragmentView((arg1, arg2, arg3) -> { 
     View view = arg1.inflate(R.layout.recyclerview_layout, arg2, false); 
     RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); 
     selectDateRecyclerViewAdapter = new SelectDateRecyclerViewAdapter(dayList,this,(v,position) -> 
     { 
      AppCompatButton appCompatButton = (AppCompatButton)v.findViewById(R.id.selectHourButton); 
      AppCompatImageView appCompatImageView = (AppCompatImageView)v.findViewById(R.id.calendarDot); 
      highlightButton(appCompatButton,appCompatImageView); 
     }); 
     recyclerView.setHasFixedSize(false); 
     recyclerView.addItemDecoration(selectDateRecyclerViewAdapter. new CalendarItemDecoration(10,dayList.size())); 
     GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(),4,GridLayoutManager.VERTICAL,false); 
     recyclerView.setLayoutManager(gridLayoutManager); 
     recyclerView.setAdapter(selectDateRecyclerViewAdapter); 
     selectDateRecyclerViewAdapter.notifyDataSetChanged(); 
     return view; 
    }); 

highlightButton方法等

おかげでボタンの背景を変更します。ここでは

は私がRecyclerViewを作成する方法です。

答えて

0

フラグを保持して、新しいアイテムを選択し、最初にフラグをクリアして新しい選択したアイテムの位置にリセットするときに、どのボタンが選択されたかを記録する必要があります。次にnotifyDataSetChanged()またはnotifyItemChanged()を実行します。

この関数のメインコードは、highlightButtonメソッドに配置できます。だからhighlightButtonコードを投稿した方が良いです。

0

これは1回の選択であるため、外部変数、たとえばint selectedIndexを使用して選択位置を追跡できます。お使いのアダプタのコードで

public class ViewHolder extends RecyclerView.ViewHolder { 

       View itemView;   
       public ViewHolder(View v) { 
        super(v); 
        itemView = v; 
        v.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          selectedPostion = getAdapterPosition(); 
          if(selectedPosition == RecyclerView.NO_POSITION) return; 
          recyclerViewOnItemClickListener.onItemSelect(itemView, getAdapterPosition()); //Custom listener - in turn calls your highlightButton method 

          //call notifyDataSetChanged(); or notifyItemRangeChanged(); 
          } 
        }); 
       } 
      } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 

      holder.itemView.setSelected(position == selectedPostion); 
    } 
関連する問題