在片段中使用时,ListView中没有数据显示

时间:2017-01-18 19:01:35

标签: android listview android-fragments baseadapter

我在下面发布我的代码。即使代码中没有错误,我也没有在片段布局中获得任何视图,所以任何人都可以帮助我。

这是我的片段类

generator = Stream.iterate(3, &(&1+2))
#⇒ #Function<61.8243704/2 in Stream.unfold/2>
generator |> Enum.take(5)
#⇒ [3, 5, 7, 9, 11]

现在这是我的适配器类

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view= inflater.inflate(layout.caselist, container, false);
    lv = (ListView) view.findViewById(id.list_client);

    db = new DatabaseHelper(getActivity());
    adapter = new ClientListAdapter(getActivity(), list);
    list = db.getAllClientList(); // I'm getting all data from database            
    lv.setAdapter(adapter);
    return view;
}

我不知道我在哪里做错了,我的数据库中有20个数据。

2 个答案:

答案 0 :(得分:1)

View view= inflater.inflate(layout.caselist, container, false);
lv = (ListView) view.findViewById(id.list_client);

db = new DatabaseHelper(getActivity());
 list = db.getAllClientList(); // I'm getting all data from database 
adapter = new ClientListAdapter(getActivity(), list);           
lv.setAdapter(adapter);
return view;

您需要在将信息放入适配器之前获取信息

答案 1 :(得分:1)

看起来问题就在这里:

adapter = new ClientListAdapter(getActivity(), list);
list = db.getAllClientList(); // I'm getting all data from database 

将带有空列表的引用传递给适配器,然后获取不在适配器中的新列表引用。因此,首先获取列表,然后将其传递给适配器。

但我建议您至少使用 CursorLoader 从DB加载数据。或者使用 RxAndroid 等包装它。您不应该在UI线程中访问数据库。

P.S。你可以在这里阅读CursorLoaders:https://developer.android.com/guide/components/loaders.html