【问题标题】:RecyclerView - Access to a list from another classRecyclerView - 访问另一个类的列表
【发布时间】:2018-09-15 17:51:54
【问题描述】:

我想访问另一个类的列表,然后将其放入我的 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适配器代码贴在这里
  • 你想通过你的活动或普通课程发送或访问它吗??
  • recyclerview 适配器在这里:pastiebin.com/5b9d4b3049028
  • 我想通过我的普通班级发送它

标签: android


【解决方案1】:

你可以使用接口

像这样在 class1 中创建一个接口:

public interface CustomListListener{
    void onListChanged(List<Model1> myList);
}

在 Class1 中创建监听器的属性:

CustomListListener mListener;

在 Class1 中添加一个用于初始化监听器的公共函数:

public static void setOnListChangeListener(CustomListListener listener){
    this.mListener = listener;
}

在 Class2 中实现监听器:

public class Class2 implements Class1.CustomListListener { 
}

当你在 Class2 中实现监听器时,你会在 class2 中得到一个函数,如下所示:

@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 属性: 例如,您可以在类的 OnCreate 函数中启动 mListener

 Class1.setOnListChangeListener(this)
 this refers to class2 context

2- 将数据发送到 class2 在您的 class1 中,每当您想更新列表时,请使用 mListener 属性,如下所示:

mListener.onListChanged(myList);

这就像您可以随时更改列表并在 onListChanged 函数中获取更新的值一样,您还可以在 CustomListListener 中添加更多函数以用于不同的场景,例如删除项目、添加项目等...

【讨论】:

    【解决方案2】:

    您可以像这样访问列表:

    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);
    

    【讨论】:

      【解决方案3】:

      您可以使用sharedPreference 来存储该列表,并可以使用其key 在项目中的任何位置访问它。这个链接TinyDb Example

      分享了最好的方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-20
        相关资源
        最近更新 更多