RecyclerView - 从另一个类访问列表

3
我希望能够从另一个类中访问列表,然后将其放入我的RecyclerViewAdapter对象中。
第一个包含列表的类。
public class Class1 {

    // The List : 

    List<Model1> mlisto = new ArrayList<>(); 
    mlisto.add(new Model1("HOLA","Dep17",R.drawable.img));
    mlisto.add(new Model1("bonjour","Dep17",R.drawable.img));
    mlisto.add(new Model1("hi","Dep17",R.drawable.img));
}

第二个类从第一个类访问列表。
public class Class2 { 

    RecyclerViewAdapter adapter = new RecyclerViewAdapter(this,new Class1().mlisto); 

}

当我使用new Class1().mlisto时,它返回一个空列表,RecyclerView在应用程序中也没有显示任何内容。

你能把你的RecycleView适配器代码粘贴在这里吗? - iamavdhesh
你想通过你的活动或普通类来发送或访问它吗? - Abhishek Sharma
RecyclerView适配器在这里:https://www.pastiebin.com/5b9d4b3049028 - Skrille Ford
我想通过我的普通类发送它。 - Skrille Ford
3个回答

0

您可以像这样访问列表:

public class Class1{

    private List<Model> mList;
    public List<Model1> getList(){

         mList = new ArrayList<>();
         mList.add(new Model1("HOLA","Dep17",R.drawable.img));
         mList.add(new Model1("bonjour","Dep17",R.drawable.img));
         mList.add(new Model1("hi","Dep17",R.drawable.img));
         return mList
    }
}

在第二个类中,您可以像这样使用它:

RecyclerViewAdapterrr adapter = new RecyclerViewAdapterrr(this,new Class1().getList()); 

setAdapter() 很重要

your_recyclerview_object.setAdapter(adapter);

0
你可以使用接口。
在class1内创建一个接口,像这样:
public interface CustomListListener{
    void onListChanged(List<Model1> myList);
}

在Class1内创建一个listener属性:
CustomListListener mListener;

在Class1中添加一个公共函数以初始化监听器:
public static void setOnListChangeListener(CustomListListener listener){
    this.mListener = listener;
}

在Class2内实现监听器:

public class Class2 implements Class1.CustomListListener { 
}

当您在Class2中实现listener时,您将获得一个类似于以下内容的函数:
@Override
public void onListChanged(List<Model1> myList) {
    // in here you will access the list that you created or changed inside class1
}

当你想要将myList数据发送到class2时: 1- 初始化mListener属性: 例如,你可以在class的OnCreate函数中初始化mListener。

 Class1.setOnListChangeListener(this)
 this refers to class2 context

2- 将数据发送到class2 在你的class1中,每当你想要更新列表时,使用mListener属性,就像这样:

mListener.onListChanged(myList);

这样你就可以随时更改列表,并在onListChanged函数中获取更新后的值,同时你还可以为不同的场景添加更多的函数到CustomListListener中,比如删除项目、添加项目等等...


0

您可以使用sharedPreference来存储列表,并且可以通过使用它的key在项目中任何地方访问它。最佳方法在此链接中共享 TinyDb Example


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接