当自定义适配器的数据依赖于另一个类时,如何自动刷新其内容?

我的上帝

我正在尝试使用notifyDataSetChanged()自定义适配器在另一类中更改数据时从一个类更改视图

Class FragmentOne在其中listItems添加线程的地方开始

然后,我正在使用class FragmentTwo并获取这些信息listItems并更新我的视图。

我的代码-

FragmentOne类

static ArrayList<String> listItems = null;

private class MonitorLogThread extends Thread
{
    BufferedReader br;

    @Override
    public void run() {

while(((line=br.readLine()) != null) && !this.isInterrupted()){
   listItems.add(line);
}
 }

类片段2

private BBLogListAdapter mBBLogListAdapter;
ArrayList<String> receiptlist;

@Override
    protected void onResume() {
    super.onResume();  

     if(receiptlist == null)
        receiptlist = new ArrayList<String>();
    else
        receiptlist.clear();

    // Initializes list view adapter.
    mBBLogListAdapter = new BBLogListAdapter();
    setListAdapter(mBBLogListAdapter);

    mBBLogListAdapter.updateReceiptsList(FragmentOne.listItems);

    mBBLogListAdapter.notifyDataSetChanged();
 }

        // Custom Adapter
        private class BBLogListAdapter extends BaseAdapter {
             //Code to set view dynamically according to data in adapter
             public void updateReceiptsList(ArrayList<String> newlist) {
             receiptlist.clear();
             receiptlist.addAll(newlist);
        }

        //Some more code..
      }
} 

因此,当前我在onResume()方法中使用方法updateReceiptsList来更新内容。这仅在我们恢复活动时更新。

但是我想根据另一个活动中的数据更改在此活动中自动刷新内容。

ranjk89

抓住适配器对象,并在“ FragmentTwo”中创建一个静态方法,

public static void notifyDataChanged(){
  if(mBBLogListAdapter != null){
       mBBLogListAdapter.updateReceiptsList(FragmentOne.listItems);
       mBBLogListAdapter.notifyDataSetChanged();
  }
}

每当线程中的数据更改时,都将调用此静态方法。

static ArrayList<String> listItems = null;

private class MonitorLogThread extends Thread
{
  BufferedReader br;

 @Override
 public void run() {

while(((line=br.readLine()) != null) && !this.isInterrupted()){
 listItems.add(line);

 FragmentTwo.notifyDataChanged();
 }
}

请注意,您需要使用与FragmentTwo的onResume中用于setAdapter的适配器对象相同的适配器

setListAdapter(mBBLogListAdapter);

PS:一种更清洁的替代方法是在“ FragmentTwo”上使用侦听器,以侦听“ FragmentOne”上的任何数据更改。参见此处以了解实施细节-http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Moshi自定义适配器将json镜像类转换为另一个

试图使一个事件依赖于另一个事件,并且使用jQuery自定义事件传递数据

将自定义 IFileProvider 添加到依赖于另一个 DI 服务的 RazorViewEngineOptions

依赖于另一个表单控件的Angular 2自定义验证器

从另一个适配器刷新recyclerview适配器的值

获取一个ListView刷新?YouTube API-自定义适配器

如何键入依赖于另一个类参数值的类参数?

如何编写依赖于另一个定义文件的打字稿定义文件

如何使用@InjectMocks依赖于另一个要模拟的类?

从另一个适配器中更新适配器数据集

如何在Android的多个屏幕上使用一个自定义适配器类?

当一个依赖于另一个的内容时渲染2个元素

一个Adaptee类继承另一个适配器的适配器设计模式?

一个CSS类依赖于另一个

自动值包裹适配器可以处理另一个自动值类的类型集吗?

如何测试依赖于另一个服务(又依赖于Http服务)的服务/组件?

MYSQL:如何自动删除表中依赖于另一个表中的记录的行

如何使一个Maven模块依赖于另一个?

在cmake中,如何使一个目标依赖于另一个目标?

强制自动完成依赖于另一个人的结果

如何使用自定义基本适配器和sqlite数据库刷新Listview?

从另一个片段的适配器刷新RecyclerView片段

验证依赖于 Django 表单中另一个 DateField 数据的 DateField 数据

从依赖于另一个jar的jar加载类

运行依赖于另一个Java类的Java文件

setState 依赖于另一个类的值

如何将参数从适配器类传递到另一个类中的方法

如何设置依赖于另一个变量的变量在原始变量更新时更新?

编译依赖于另一个扩展的VS Code扩展时出错