我是Android的绝对初学者,我可以成功从我的Parse数据库中检索数据但是我无法将它们显示到自定义ListView中,有线的是应用程序停止但是Android监视器或消息控制台都没有Android Studio给我带来任何错误,消息控制台实际上说信息:构建成功,Logcat完全是空的,但应用程序因警告而停止不幸的是,YourApp已经停止 < / p>
这是我在MainActivity.java中的代码:
// MARK: - QUERY EVENTS
public void queryEvents() {
final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this,
R.layout.test_cell);
final ListView eventsListView = (ListView) findViewById(R.id.eventsListView);
eventsListView.setAdapter(listAdapter);
// Query
ParseQuery<ParseObject> query = ParseQuery.getQuery("EventsClass");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException error) {
if (error == null) {
eventsArray = objects;
progDialog.dismiss();
for (int i = 0; i < eventsArray.size(); i++) {
ParseObject eventClass = eventsArray.get(i);
String title = eventClass.getString("title");
Toast.makeText(getApplicationContext(), eventClass.getString("title"), Toast.LENGTH_LONG).show();
listAdapter.add(title);
}
} else {
Toast.makeText(getApplicationContext(), error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}
});
注意:如果我评论listAdapter.add(title);
,Toast消息没问题,它会一个接一个地从我的Parse数据库中触发所有“标题”记录,并且应用程序不会崩溃。否则,我没有得到任何数据,应用程序会停止,如上所述。
我的R.layout。 test_cell 是一个简单的xml文件,它是正确的,它托管一个带有TextView的LinearLayout。
我在这里做错了什么?我没有创建任何自定义ListAdapter.java文件,不知道我是否真的需要它与上面的代码...
谢谢!
答案 0 :(得分:1)
我认为你的问题基于你如何启动listAdapter
,我建议你做两件事:
1)创建ArrayList<String>
以保存从解析
2)要初始化listAdapter
,请确保使用构造函数作为参数Context
,layout
,id
和ArrayList
。您已经拥有的前两个参数,只需在TextView
中添加第三个R.layout.test_cell
的id,为第四个参数添加您创建的ArrayList
。请务必使用new ArrayList<>()
3)当您从解析中收到值时更新ArrayList
而不是直接更新Adapter
。像这样:
for (int i = 0; i < eventsArray.size(); i++) {
ParseObject eventClass = eventsArray.get(i);
String title = eventClass.getString("title");
arrayList.add(title);
}
// Once you update your ArrayList you can update the Adapter
listAdapter.notifyDataSetChanged();
这应该可以解决问题。