繁体   English   中英

如何在oncreateview方法中不在片段中更新listview

[英]How to update listview inside fragment not in oncreateview method

我有一个方法«Start()» ,它可以读取文档并将数据写入列表视图

此方法在ViewPager中使用的片段中

我需要此方法才能显示列表视图,因为我需要在其他操作中调用此方法,而这些操作将无法显示列表视图

分段

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

PS如果添加

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

Start()方法中

然后,

lvMain.setAdapter(adapter);

返回null

使用View代替ViewGroup

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM