2016-08-07 17 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

단일 선택이기 때문에 외부 변수 인 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); 
    } 
관련 문제