gpt4 book ai didi

android - 始终显示 Listview 空 View

转载 作者:行者123 更新时间:2023-11-29 21:10:16 25 4
gpt4 key购买 nike

我使用自定义 ParseQueryAdapter在 ListView 中加载数据。我想在没有数据时显示一条消息,但即使数据不为空也会显示该消息。我认为这是由于数据尚未加载的事实。我尝试使用 setEmptyView 并且还对适配器 if mAdapter.isEmpty() 进行了测试。

我尝试等待几秒钟,然后再测试适配器是否为空,但尽管它可以工作,但我认为这不是一个好的做法。

我在其中进行查询的自定义适配器:

public class CategoryEventsAdapter extends ParseQueryAdapter<Event> {

public CategoryEventsAdapter(Context context, final String c) {

super(context, new ParseQueryAdapter.QueryFactory<Event>() {

public ParseQuery<Event> create() {
ParseQuery<Event> query = new ParseQuery<Event>("Event");
query.whereEqualTo("published", true);
query.whereEqualTo("category", c);
return query;
}
});
}

@Override
public View getItemView(Event event, View v, ViewGroup parent) {
...
}
}

我只是在 fragment 中调用它:

mAdapter = new CategoryEventsAdapter(getActivity(), category);
listview.setAdapter(mAdapter);
if (mAdapter.isEmpty()) {
// show message
}

最佳答案

我从未使用过 Parse 的这个特定部分,但查看文档,查询似乎是异步的。相反,您可以试试这个:

mAdapter = new CategoryEventsAdapter(getActivity(), category);

// add a listener for when the query is done.
mAdapter.addOnQueryLoadListener(new OnQueryLoadListener<ParseObject>() {
public void onLoaded(List<ParseObject> objects, ParseException e) {
// Check if empty here and show message.
if (objects.size == 0){
// show message
}
}
});

listview.setAdapter(mAdapter);

因此一旦查询完成,它应该调用 onLoaded 以便您可以确定它是否为空。在 onLoaded 中,您可以检查 objects 参数的计数。如果此时执行 mAdapter.isEmpty,则不确定它是否已在适配器中设置。

关于android - 始终显示 Listview 空 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23123504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com