【发布时间】:2017-12-19 14:06:53
【问题描述】:
我在 Backendless 中设置了一个数据库,我的 Android Studio 应用程序正在访问它。连接成功并且项目名称已成功检索(根据日志),但我的列表视图未显示它们。我在本地添加了一个条目“测试”,并且正在显示。你能帮我吗?这是我的代码:
public class ListItems extends Activity {
ListView foodListView;
ArrayList<String> myFood;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set up listView
setContentView(R.layout.list_items);
foodListView = (ListView)findViewById(R.id.foodListView);
myFood = new ArrayList();
myFood.add("test");
//connect to database
Backendless.setUrl(Defaults.SERVER_URL);
Backendless.initApp(getApplicationContext(),
Defaults.APPLICATION_ID,
Defaults.API_KEY);
final IDataStore<Map> tableQuery = Backendless.Data.of( "FoodList" );
final DataQueryBuilder queryBuilder = DataQueryBuilder.create();
queryBuilder.setWhereClause( "Section = 'Dairy'" );
queryBuilder.setSortBy( "name" );
Backendless.Data.of( "FoodList" ).find( queryBuilder,
new AsyncCallback<List<Map>>()
{
@Override
public void handleResponse(List<Map>response ){
Iterator<Map> itr = response.iterator();
while(itr.hasNext()) {
Map<String, Object> contact = (Map<String, Object>) itr.next();
String name = (String) contact.get("Name");
myFood.add(name);
}
//test to show items retrived
for(String aa:myFood){
System.out.println("MYAPP " +aa);
}
}
@Override
public void handleFault( BackendlessFault fault )
{
Log.e("MYAPP", "Server reported an error - " + fault.getMessage());
}
});
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myFood);
foodListView.setAdapter(arrayAdapter);
}
}
【问题讨论】:
-
我尝试了 arrayAdapter.notifyDataSetChanged() 但它不起作用我仍然只得到一个显示“测试”的列表。是否与在我设置视图时检索数据尚未完成有关?
-
绝对是。你在哪里打电话给
.notifyDataSetChanged()? -
您好,很抱歉延迟回复。我在 foodListView.setAdapter(arrayAdapter) 之前和之后调用了 .notifyDataSetChanged() 但似乎都不起作用。我做错地方了吗?
-
您应该在数据更新后立即调用,在您的情况下是在
handleResponse方法内。
标签: listview android-studio backendless