的Android使用适配器
问题描述:
我试图创建一个动态列表视图创建列表视图,之前是我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;
}
答
不喜欢这个,
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();
}
您好,感谢的答案目前我得到这个错误'无法解析符号jokeListAdapter'这里'jokeListAdapter.setValue(笑话);'无效的方法'声明返回类型这里required''公众的setValue(名单笑话) {' –
utdev
** public void setValue(List jokes)** not ** public setValue(List jokes)**我的错误我更新了我的答案。 –
哦,不要忘了我非常感谢:D – utdev