Android Recyclerview在上一个数据末尾更新数据

Android Recyclerview在上一个数据末尾更新数据,android,android-recyclerview,Android,Android Recyclerview,在请求一些新数据时,Recycler View adapter正在更新以前数据末尾的数据,因为我只想在屏幕上显示最新/最新请求的数据,并删除以前的数据。 下面是适配器代码,如果需要,可以显示其他代码 private LayoutInflater inflater; Context context; List<Data> dataArray, dataArray1, dataArray2; public RecyclerViewAdapter(Context context, Li

在请求一些新数据时,Recycler View adapter正在更新以前数据末尾的数据,因为我只想在屏幕上显示最新/最新请求的数据,并删除以前的数据。 下面是适配器代码,如果需要,可以显示其他代码

 private LayoutInflater inflater;
Context context;
List<Data> dataArray, dataArray1, dataArray2;

public RecyclerViewAdapter(Context context, List<Data> dataArray) {
    swap(dataArray1);
    this.dataArray1 = dataArray;
    this.context = context;
    inflater = LayoutInflater.from(context);
}
private void swap(List<Data> dataArray1){
    if (this.dataArray1 != null) {
        this.dataArray.clear();
        System.out.println(dataArray1);

    }

    notifyDataSetChanged();
}

@Override
public RecyclerViewAdapter.CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, null);
    CustomViewHolder holder = new CustomViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
    Data current = dataArray1.get(position);
    //holder.image.setImageResource(current.Limage);
    holder.textView1.setText(current.heading);
    holder.textView2.setText(current.date);

}

@Override
public int getItemCount() {
    return dataArray1.size();
}

public static class CustomViewHolder extends RecyclerView.ViewHolder {
    //ImageView image;
    TextView textView1, textView2;

    public CustomViewHolder(View itemView) {
        super(itemView);
        // image = (ImageView)itemView.findViewById(R.id.Limage);
        textView1 = (TextView) itemView.findViewById(R.id.heading);
        textView2 = (TextView) itemView.findViewById(R.id.date);

    }
}

}
}


任何帮助都将不胜感激。

不要使用构造函数更新
RecyclerView
。构造函数应该是这样的

private LayoutInflater inflater;
Context context;
List<Data> dataArray;

public RecyclerViewAdapter(Context context, List<Data> dataArray) {
    this.dataArray = dataArray;
    this.context = context;
    inflater = LayoutInflater.from(context)
}
要添加和更新数据,请执行以下操作:

dataArray.clear();
dataArray.add(data);
adapter. notifyDataSetChanged();

不要使用构造函数更新
RecyclerView
。构造函数应该是这样的

private LayoutInflater inflater;
Context context;
List<Data> dataArray;

public RecyclerViewAdapter(Context context, List<Data> dataArray) {
    this.dataArray = dataArray;
    this.context = context;
    inflater = LayoutInflater.from(context)
}
要添加和更新数据,请执行以下操作:

dataArray.clear();
dataArray.add(data);
adapter. notifyDataSetChanged();

因为CustomViewHolder是一个静态类

换成

public class CustomViewHolder extends RecyclerView.ViewHolder

因为CustomViewHolder是一个静态类

换成

public class CustomViewHolder extends RecyclerView.ViewHolder

我认为,一旦您获得新数据,您将向列表中添加所有数据。相反,清除arraylist并向其中添加新数据,然后调用notify datasetChanged。那应该能解决你的问题。如果没有,请显示包含回收器视图的活动或片段。

我认为您在获得新数据后将所有数据添加到列表中。相反,清除arraylist并向其中添加新数据,然后调用notify datasetChanged。那应该能解决你的问题。如果没有,请显示包含回收器视图的活动或片段。

在适配器中使用此代码-

private LayoutInflater inflater;
Context context;
List<Data> dataArray;

public RecyclerViewAdapter(Context context, List<Data> dataArray) {
    this.dataArray = dataArray;
    this.context = context;
    inflater = LayoutInflater.from(context);
}


@Override
public RecyclerViewAdapter.CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, null);
    CustomViewHolder holder = new CustomViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
    Data current = dataArray.get(position);
    //holder.image.setImageResource(current.Limage);
    holder.textView1.setText(current.heading);
    holder.textView2.setText(current.date);

}

@Override
public int getItemCount() {
    return dataArray.size();
}

public static class CustomViewHolder extends RecyclerView.ViewHolder {
    //ImageView image;
    TextView textView1, textView2;

    public CustomViewHolder(View itemView) {
        super(itemView);
        // image = (ImageView)itemView.findViewById(R.id.Limage);
        textView1 = (TextView) itemView.findViewById(R.id.heading);
        textView2 = (TextView) itemView.findViewById(R.id.date);

    }
}
私人充气机;
语境;
列表数据数组;
公共RecycleServiceAdapter(上下文、列表数据数组){
this.dataArray=dataArray;
this.context=上下文;
充气器=充气器。从(上下文);
}
@凌驾
public RecycleServiceAdapter.CustomViewHolder onCreateViewHolder(视图组父级,int-viewType){
查看视图=LayoutFlater.from(parent.getContext()).flate(R.layout.cardview,null);
CustomViewHolder=新的CustomViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(CustomViewHolder,int位置){
当前数据=dataArray.get(位置);
//holder.image.setImageResource(current.Limage);
holder.textView1.SETEXT(当前标题);
holder.textView2.setText(当前日期);
}
@凌驾
public int getItemCount(){
返回dataArray.size();
}
公共静态类CustomViewHolder扩展了RecyclerView.ViewHolder{
//图像视图图像;
文本视图文本视图1、文本视图2;
公共CustomViewHolder(查看项目视图){
超级(项目视图);
//image=(ImageView)itemView.findViewById(R.id.Limage);
textView1=(TextView)itemView.findViewById(R.id.heading);
textView2=(TextView)itemView.findViewById(R.id.date);
}
}
每次添加新元素之前,都要清除列表,如下所示-

活动中片段

 List<Data> dataArray = new List();

// your other code here..


private void yourMethodName() {
    dataArray.clear();
    try{

        // your code to get data

        // new add your new data to list

        dataArray.add(yourData);

    }catch (Exception ex){
        ex.getMessage();
    }

    // Notify your adapter here
    adapter.notifyDataSetChanged();
}
List dataArray=newlist();
//你的其他代码在这里。。
私有void yourMethodName(){
dataArray.clear();
试一试{
//获取数据的代码
//新建将您的新数据添加到列表中
添加(您的数据);
}捕获(例外情况除外){
例如getMessage();
}
//在此处通知您的适配器
adapter.notifyDataSetChanged();
}

希望它能工作。

在适配器中使用此代码-

private LayoutInflater inflater;
Context context;
List<Data> dataArray;

public RecyclerViewAdapter(Context context, List<Data> dataArray) {
    this.dataArray = dataArray;
    this.context = context;
    inflater = LayoutInflater.from(context);
}


@Override
public RecyclerViewAdapter.CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, null);
    CustomViewHolder holder = new CustomViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
    Data current = dataArray.get(position);
    //holder.image.setImageResource(current.Limage);
    holder.textView1.setText(current.heading);
    holder.textView2.setText(current.date);

}

@Override
public int getItemCount() {
    return dataArray.size();
}

public static class CustomViewHolder extends RecyclerView.ViewHolder {
    //ImageView image;
    TextView textView1, textView2;

    public CustomViewHolder(View itemView) {
        super(itemView);
        // image = (ImageView)itemView.findViewById(R.id.Limage);
        textView1 = (TextView) itemView.findViewById(R.id.heading);
        textView2 = (TextView) itemView.findViewById(R.id.date);

    }
}
私人充气机;
语境;
列表数据数组;
公共RecycleServiceAdapter(上下文、列表数据数组){
this.dataArray=dataArray;
this.context=上下文;
充气器=充气器。从(上下文);
}
@凌驾
public RecycleServiceAdapter.CustomViewHolder onCreateViewHolder(视图组父级,int-viewType){
查看视图=LayoutFlater.from(parent.getContext()).flate(R.layout.cardview,null);
CustomViewHolder=新的CustomViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(CustomViewHolder,int位置){
当前数据=dataArray.get(位置);
//holder.image.setImageResource(current.Limage);
holder.textView1.SETEXT(当前标题);
holder.textView2.setText(当前日期);
}
@凌驾
public int getItemCount(){
返回dataArray.size();
}
公共静态类CustomViewHolder扩展了RecyclerView.ViewHolder{
//图像视图图像;
文本视图文本视图1、文本视图2;
公共CustomViewHolder(查看项目视图){
超级(项目视图);
//image=(ImageView)itemView.findViewById(R.id.Limage);
textView1=(TextView)itemView.findViewById(R.id.heading);
textView2=(TextView)itemView.findViewById(R.id.date);
}
}
每次添加新元素之前,都要清除列表,如下所示-

活动中片段

 List<Data> dataArray = new List();

// your other code here..


private void yourMethodName() {
    dataArray.clear();
    try{

        // your code to get data

        // new add your new data to list

        dataArray.add(yourData);

    }catch (Exception ex){
        ex.getMessage();
    }

    // Notify your adapter here
    adapter.notifyDataSetChanged();
}
List dataArray=newlist();
//你的其他代码在这里。。
私有void yourMethodName(){
dataArray.clear();
试一试{
//获取数据的代码
//新建将您的新数据添加到列表中
添加(您的数据);
}捕获(例外情况除外){
例如getMessage();
}
//在此处通知您的适配器
adapter.notifyDataSetChanged();
}

希望它能起作用。

不要使用构造函数更新recyclerView中的数据。不要使用构造函数更新recyclerView中的数据。好吧,我在开始时已经这样做了,但它不起作用。。。但是如果我这样做,我会得到同样的结果。。。i、 在上一个oututwell的结尾,我在一开始就做了,但它不起作用。。。但是如果我这样做,我会得到同样的结果。。。i、 在上一篇文章的结尾,你是对的。。。。它起作用了,但不是所有的时间,第一次。。。它显示了以前的输出,但再次单击同一活动后,它显示了预期的响应…添加了活动代码,如果您可以进一步建议,您是对的。。。。它起作用了,但不是所有的时间,第一次。。。它显示了以前的输出,但再次单击同一活动后,它显示了预期的响应…如果可以进一步建议,请添加活动代码