代码之家  ›  专栏  ›  技术社区  ›  utdev vijayP

Android使用适配器创建Listview

  •  0
  • utdev vijayP  · 技术社区  · 7 年前

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

    目前,我正在运行此操作并获得成功响应,但我的listview中没有任何项目,它仍然为空:

        @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;
        }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Muthukrishnan Rajendran    7 年前

    这样做,

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

    在JokelistaAdapter中。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();
        }