【发布时间】:2019-09-12 10:34:39
【问题描述】:
我有一个方法 «Start()» 读取文档并将数据写入 listview
此方法在 ViewPager
中使用的片段中我需要这个方法才能显示列表视图,因为我需要在其他无法显示 listview
的操作中调用此方法片段
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(适配器);
返回 null
【问题讨论】:
-
哪一个返回null?
-
listview "lvMain" 当您在此处添加新记录
lvMain = getActivity().findViewById(R.id.lvWednesday);它变为空。应用加载时返回 nulllvMain.setAdapter(adapter);
标签: java android listview adapter