Meine Frage ist: wenn ich meine Seite scrollen, werden einige Ansichten an einem neuen Ort angezeigt, nicht alle meine Inhalte aus dem Adapter werden angezeigt, aber nur eine Art von ihnen. unten ist meine Adapterklasse:Wie zu stoppen meine RecyclerView die Ansicht wiederverwenden
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
private List<BabyFigure> rinfoList ;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView id,date,time,type,quantity,demo;
public MyViewHolder(View view) {
super(view);
id = (TextView) view.findViewById(R.id.recycle_view_id);
date = (TextView) view.findViewById(R.id.recycle_view_date);
time = (TextView) view.findViewById(R.id.recycle_view_time);
type = (TextView) view.findViewById(R.id.recycle_view_type);
quantity = (TextView) view.findViewById(R.id.recycle_view_quantity);
demo = (TextView) view.findViewById(R.id.recycle_view_demo);
}
}
public RecyclerViewAdapter(List<BabyFigure> infoList) {
this.rinfoList = infoList;
setHasStableIds(true);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_content,
parent,false);
return new MyViewHolder(itemView);
}
@Override
public int getItemCount() {
Log.d(getClass().getSimpleName(),String.valueOf(rinfoList.size()));
return rinfoList.size();
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public void onBindViewHolder(MyViewHolder holder,int position) {
BabyFigure babyFigure = rinfoList.get(position);
holder.quantity.setText(String.valueOf(babyFigure.getQuantity()));
holder.id.setText(String.valueOf(babyFigure.getId()));
holder.demo.setText(babyFigure.getDemo());
holder.date.setText(babyFigure.getDate());
holder.time.setText(babyFigure.getTime());
holder.type.setText(babyFigure.getType());
}
}
Vielen Dank
Tat overrode ich die GetItemID Methode, aber ich benutze "return super.getItemID (Position)" statt. Wie auch immer, ich folge deinem Rat, und es funktioniert, vielen Dank –
Es funktioniert nicht für mich ... kannst du mir bitte helfen, getItem ID zu setzen? Ich benutze ArrayList
@JadavLalit Idealerweise sollten Sie etwas aussagekräftiger und spezifischer als 'Objekt' verwenden, um Ihre Artikel zu repräsentieren. Die ID ist ein logischer Wert, der ein bestimmtes Element eindeutig identifiziert. Was das für Ihren spezifischen Anwendungsfall bedeutet, bestimmen und implementieren Sie. – Karakuri