java - 如何将 notifyDataSetChanged() 与包含带有 ListView 的 fragment 的 viewpager 一起使用

标签 java android listview android-fragments android-listview

我有一个带有 FragmentStatePagerAdapter 的 ViewPager。每个页面加载一个包含 ListView 的 fragment 。此 ListView 加载许多 TextView,这些 TextView 从静态 ArrayList 获取文本。此静态 ArrayList 在 AsyncTask 中使用来自服务器的数据进行更新。好吧,我想在每次更新 ArrayList 时更新 ListView。如果我在 ViewPager 适配器上使用 notifyDataSetChanged() 它不起作用,我必须访问每个 ListViewadapter。有什么建议吗?

这是我的 AsyncTask doinBackground 方法:

protected Object doInBackground(Object[] params) {
        if(socket!=null){
            try {
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            } catch (IOException e) {
                e.printStackTrace();
            }

            while(true){
                try {
                    s = in.readLine();

                } catch (IOException e) {
                    e.printStackTrace();
                }

                Type type = new TypeToken<ArrayList<VirtualSensor>>(){}.getType();
                Gson gson = new Gson();
                _sensorComponents =(ArrayList<VirtualSensor>) gson.fromJson(s, type);
                Log.d("Mesage", _sensorComponents.get(1).get_value()+"");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        adapter.notifyDataSetChanged();

                    }
                });


            }
        }

        return null;

    }

更新:经过一些测试后,我发现当我在 viewpager 中有超过 1 个页面时会出现问题。我使用 FragmentStatePagerAdapter。

最佳答案

使用EventBus 是更好的解决方案。

也试试这个。

与其将数据分配给您的 ArrayList,不如尝试向其添加内容。

改变这一行

 _sensorComponents =(ArrayList<VirtualSensor>) gson.fromJson(s, type);

 _sensorComponents.clear();
 _sensorComponents.add((ArrayList<VirtualSensor>) gson.fromJson(s, type));

然后通过调用 adapter.notifyDataSetChanged(); 通知您的数据集

关于java - 如何将 notifyDataSetChanged() 与包含带有 ListView 的 fragment 的 viewpager 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31834660/

相关文章:

java - 在 IntelliJ 中并行多次运行相同的 gradle 任务

android - Intent 没有设置相机参数

java - 分析文本文件

Android 操作栏菜单项

C# ListView : ListViewItem offset possible?

java - java中prometheus的错误( Spring 执行器)

java - XYSeries.add(x,y) 方法上的 aChartEngine NullPointerException

安卓工作室 : Parsing JSON Data From 2 Different JSONArrays

Android:滚动到 View 底部

java - JavaFx。如何恢复?