2017-12-19 34 views
0

私はデータベースをバックエンドレスに設定しており、Androidスタジオアプリケーションからアクセスしています。接続は成功し、アイテムの名前は(ログごとに)正常に取得されますが、リストビューには表示されません。エントリ "test"をローカルに追加しました。これが表示されています。手伝ってくれますか?したがって、あなたがそこに表示されません - あなたが非同期的にデータをロードしているのでリストビューにバックスタンドレスのAndroidスタジオデータ検索が表示されない

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); 


} 

}

+0

https://stackoverflow.com/a/19043140/1813669 – Scadge

+0

私はarrayAdapter.notifyDataSetChangedを(試してみました)しかし、それは動作しません私はまだのみ:

は、だからあなたのコードは、次のようになります。 "テスト"を示すリストを得る。私の見解を設定するまでに、データが完全ではないことを取り出すことと関係があるでしょうか? – Newbie123

+0

これは間違いありません。あなたは '.notifyDataSetChanged()'をどこで呼びますか? – Scadge

答えて

0

、あなたのListViewは、以前のデータが到着したよりも表示されることがあります。ここに私のコードです。これに対処するには、handleResponseメソッドの内側にあるデータソースリストを更新した直後にListViewにあるnotifyDataSetChanged()に電話する必要があります。

​​
関連する問題