java - 如何更新 fragment 内的 ListView 而不是在 oncreateview 方法中

标签 java android listview adapter

我有一个方法«Start()»,它读取文档并将数据写入listview

此方法位于 ViewPager 中使用的 fragment 中

我需要此方法才能显示 ListView ,因为我需要在其他操作中调用此方法,而我将无法显示 ListView

fragment

public class classWednesday extends Fragment {
    private ListView lvMain;
    private List<Fragment> list = new ArrayList<>();
    ArrayList<HelpAdapter> products = new ArrayList<>();
    Integer num = 0;
    private SharedPreferences settings;
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser && (getActivity()!=null)) {
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("Day","Wednesday.txt" );
            editor.apply();
        }
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.wednesday, container,false);
        Start();
        lvMain = viewGroup.findViewById(R.id.lvWednesday);
        Adapter adapter = new Adapter(getActivity(),products);
        lvMain.setAdapter(adapter);
        Toast.makeText(getActivity(),"dsaasdasasdhasuidgasiuygausgdgydgas",Toast.LENGTH_LONG).show();
        settings = getActivity().getSharedPreferences("Settings", MODE_PRIVATE);
        if (settings.contains("Wednesday")) {
            ImageButton imageButton = viewGroup.findViewById(R.id.imageButtonWednesday);
            if (settings.getBoolean("Wednesday", true))
                imageButton.setImageResource(R.drawable.on);
            else
                imageButton.setImageResource(R.drawable.off);

        }
        return viewGroup;
    }
    public void Start() {
        products.clear();
        try {
            FileInputStream read = getActivity().openFileInput("Wednesday.txt");
            InputStreamReader reader = new InputStreamReader(read);
            BufferedReader bufferedReader = new BufferedReader(reader);
            String temp_read;
            while ((temp_read = bufferedReader.readLine()) != null) {
                num ++;
                products.add(new HelpAdapter(num + ")", temp_read));

            }
            bufferedReader.close();
            reader.close();
            read.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NullPointerException ignore) {    
        }
        num = 0;    
    }
}

附注如果添加

lvMain = getActivity().findViewById(R.id.lvWednesday);
Adapter adapter = new Adapter(getActivity(),products);         
lvMain.setAdapter(adapter);

Start()方法中

那么,

lvMain.setAdapter(adapter);

返回

最佳答案

使用View而不是ViewGroup

View viewGroup = inflater.inflate(R.layout.wednesday, container,false);

关于java - 如何更新 fragment 内的 ListView 而不是在 oncreateview 方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57904880/

相关文章:

java - JPanel 中 JLabel 的间距问题

c# - 服务层应该保留任何状态吗?或者仅通过构造函数/ setter 注入(inject)?

java - 使用 java 1.4 使用默认程序打开文件

java - 如何将ListView放入Fragment中

android - 我怎样才能跳转到android中 ListView 的一个项目?

java - Web服务获取股票报价?

android - 如何创建基于远程加载的图像大小自动调整大小的 Jetpack Compose 图像?

Java Android 谷歌地图。仅显示网格

java - 我们可以使用 FirebaseListAdapter 来填充 android 中的 TabLayout 吗?

android - 从 ListView 中删除所选项目