У меня есть recyclerview, в котором onLongClick() элемента, я показываю кнопку. Но when scroll down the recycler view and scrolling back, that button is showing on top of another item or sometimes it is not showing
вообще. Вот мой кодAndroid RecyclerView не сохраняет свое состояние при прокрутке назад
public static class TextViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,View.OnLongClickListener{
public LinearLayout enq_layout;
public LinearLayout item_layout;
public TextView enquire;
public int position;
public TextViewHolder(View itemView) {
super(itemView);
item_layout= (LinearLayout) itemView.findViewById(R.id.item_layout);
enq_layout= (LinearLayout) itemView.findViewById(R.id.enq_layout);
enquire=(TextView) itemView.findViewById(R.id.enquire);
//position=getLayoutPosition();
}
}
@Override
public int getItemViewType(int position) {
return product.get(position)!=null? VIEW_ITEM: VIEW_PROG;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cardlayout_product, parent, false);
RecyclerView.ViewHolder vh = new TextViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// Toast.makeText(act, "onBindViewHolder" +position, Toast.LENGTH_LONG).show();
final ProductDetails item = product.get(position);
final TextViewHolder hold=((TextViewHolder)holder);
//hold.position=position;
// hold.item_layout.setTag(position);
hold.item_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// go to next activity
}
});
hold.item_layout.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
// show enquiry button
hold.enq_layout.setVisibility(View.VISIBLE);
}
});
hold.enquire.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//do some operation
int productid = Integer.parseInt(product.get(item.getPosition()).getProduct_id());
}
});
}
@Override
public int getItemCount() {
return product.size();
}
Я попробовал этот способ Why doesn't RecyclerView have onItemClickListener()? And how RecyclerView is different from Listview?, но я не в состоянии получить доступ мнения внутри OnClick методов onCreateViewHolder в.
Имейте, чтобы хранить в позиции с длинным щелчком и пытаться показать кнопку hide/show button base на сохраненной позиции на onBindViewHolder(). –
Спасибо. Теперь он работает. – n1m1
Рад помочь вам, и вы сделали хорошую работу ..., попробуйте загрузить свои изменения, чтобы другие могли также получить от нее идеи. –