2017-08-06 90 views
0

我试图创建一个动态列表视图创建列表视图,之前是我ArticleListFragment内部使用这个在onCreate方法:,我现在想的Android使用适配器

JokeListAdapter jokeAdapter = new JokeListAdapter(); 
    setListAdapter(jokeAdapter); 

这造就了我一个ListView基于静态项目根据我的API的项目创建ListViews。

目前,我有一个成功的响应运行这一点,但我没有得到我的列表视图的任何项目它仍然是空的:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     call = service.jokes(); 
     call.enqueue(new retrofit2.Callback<Joke>() { 
      @Override 
      public void onResponse(Call<Joke> call, Response<Joke> response) { 
       if(response.isSuccessful()) { 
        List<Joke> jokes = response.body(); 
        Log.e(TAG, "response is successful"); 
        setListAdapter(new JokeListAdapter(jokes)); 
        Log.e(TAG, "response is successful"); 
       } else { 
        Log.e(TAG, "response is not successful"); 
        System.out.println(response.errorBody()); 
       } 
      } 

      @Override 
      public void onFailure(Call<Joke> call, Throwable t) { 
       Log.e(TAG, "response on failure"); 
      } 
     }); 
} 

这是我的适配器构造:

private class JokeListAdapter extends BaseAdapter { 
    public JokeListAdapter(List<Joke> jokes) { 
     Joke.ITEMS = jokes; 
    } 

回答

2

不喜欢这个,

private JokeListAdapter jokeListAdapter; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     jokeListAdapter = new JokeListAdapter(); 
     setListAdapter(jokeListAdapter); 
     call = service.jokes(); 
     call.enqueue(new retrofit2.Callback<Joke>() { 
      @Override 
      public void onResponse(Call<Joke> call, Response<Joke> response) { 
       if(response.isSuccessful()) { 
        List<Joke> jokes = response.body(); 
        Log.e(TAG, "response is successful"); 
        jokeListAdapter.setValue(jokes); 
        //setListAdapter(new JokeListAdapter(jokes)); 
        Log.e(TAG, "response is successful"); 
       } else { 
        Log.e(TAG, "response is not successful"); 
        System.out.println(response.errorBody()); 
       } 
      } 

      @Override 
      public void onFailure(Call<Joke> call, Throwable t) { 
       Log.e(TAG, "response on failure"); 
      } 
     }); 
} 

在JokeListAdapter.java改变是这样的。

private class JokeListAdapter extends BaseAdapter { 
    List<Joke> mJokes = new ArrayList<Joke>(); // use this list for every ever in adapter 
    public JokeListAdapter() { 

    } 
    public void setValue(List<Joke> jokes) { 
     mJokes.clear(); // Clearing old items(To add new items only) 
     if(jokes != null && jokes.size() > 0) { // We dont need to add if the size is 0 
      mJokes.addAll(jokes); // Adding all the item to the list item 
     } 
     notifyDataSetChanged(); // We are refreshing View the latest with list items. 
    } 

    @Override 
    public int getCount() { 
     return mJokes.size(); 
    } 
+0

您好,感谢的答案目前我得到这个错误'无法解析符号jokeListAdapter'这里'jokeListAdapter.setValue(笑话);'无效的方法'声明返回类型这里required''公众的setValue(名单笑话) {' – utdev

+0

** public void setValue(List jokes)** not ** public setValue(List jokes)**我的错误我更新了我的答案。 –

+0

哦,不要忘了我非常感谢:D – utdev