내 있음 RecyclerViewAdapter
; RecyclerView
의 목록 항목의 레이아웃을 변경하면 잠시 동안 반복됩니다. RecyclerViewAdapter의 내부 클래스 ViewHolder
에서 목록 항목에 mainLayout
이라는 레이아웃의 onClickListener
을 설정합니다. 이것을 클릭하면 같은 목록 항목에 expandableLayout
이라는 다른 레이아웃이 펼쳐집니다. 클릭하면 원하는 항목, 뿐만 아니라 모든 항목이 11 개 항목으로 확장됩니다 (). 텍스트 색상 변경과 같은 간단한 레이아웃 변경에도 동일하게 적용됩니다. 나는 잠시 동안이 문제에 끼 었어RecyclerView에서 반복되는 항목의 레이아웃 변경을 방지하려면 어떻게해야합니까?
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
private Context mContext;
private ViewPager mViewPager;
private DataManager mDataManager;
public RecyclerViewAdapter(RecyclerView.LayoutManager layoutManager, Context context, ViewPager viewPager) {
this.mContext = context;
this.mViewPager = viewPager;
this.mDataManager = new DataManager(mContext, mViewPager);
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
FrameLayout mainLayout;
RelativeLayout editButton;
RelativeLayout deleteButton;
ExpandableLayout expandableLayout;
//Defined other View's of the item
ViewHolder(View listItemLayout) {
super(listItemLayout);
this.mainLayout = listItemLayout.findViewById(R.id.listItem_mainLayout);
this.editButton = listItemLayout.findViewById(R.id.expandedLogItem_edit);
this.deleteButton = listItemLayout.findViewById(R.id.expandedLogItem_delete);
this.expandableLayout = listItemLayout.findViewById(R.id.listItem_expandableLayout);
this.mainLayout.setOnClickListener(this);
this.editButton.setOnClickListener(this);
this.deleteButton.setOnClickListener(this);
//Initialized other View's of the item.
}
@Override
public void onClick(View view) {
if (view.getId() == mainLayout.getId()) {
expandableLayout.toggle();
//This expands or collapses not just the clicked item,
//but every item once in 11 items.
//I tried other things like changing the text color
//of a TextView, and the result is the same.
} else if (view.getId() == editButton.getId()) {
mDataManager.editItemAt(getAdapterPosition());
} else if (view.getId() == deleteButton.getId()) {
mDataManager.deleteItemAt(getAdapterPosition());
notifyItemRemoved(getAdapterPosition());
}
}
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View listItemLayout = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_list_item, parent, false);
return new ViewHolder(listItemLayout);
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
//Populating other View's of the item.
}
@Override
public int getItemCount() {
return logList.size();
}
}
, 그리고 찾거나이 문제를 해결하기 위해 어떤 방법을 생각하지 못했습니다 :
다음은 RecyclerViewAdapter입니다. 모든 응답은 감사하겠습니다.
왜 항목에서'View'에'onClickListener()'를 설정하지 않습니까? 배경 이미지가 있다고 가정하고,'holder.that_image_view.setOnClickListener() '와 같은 onBindViewHolder()에서 리스너를 설정한다고 가정 해 보겠습니다. –
실제로 문제를 해결하기 위해 현재 이미지로 변경했습니다. 또한 일하지 않았다. –
당신은 A. Kuckhinke의 대답으로, 나는 onBindViewHolder()에 청취자들을 옮겼다. 고마워. –