2016-01-21 2 views
0

Похожий вопрос к Custom adapter getview is not calledGetView обычая ArrayAdapter не вызывается

У меня есть пользовательский адаптер, чтобы поместить изображения на моем экране приложения, но это не вызывается вообще. Проведя некоторые исследования, я обнаружил, что мне нужно переопределить метод getCount(). Я сделал это, возвращая размер ArrayList, но все равно не повезло. Я думал, что список может быть пустым, но через отладку я могу подтвердить, что это не когда он передается в пользовательский класс ArrayAdapter. Я даже попытался вернуть значение 20 в getCount(), чтобы посмотреть, будет ли это работать, но все равно не повезло.

Вот код, который я сделал до сих пор;

MainActivityFragment.class

public class MainActivityFragment extends Fragment { 
    private ImageAdapter imageAdapter; 

    public class FetchMovieTask extends AsyncTask<String, Void, JSONObject> { 
     @Override 
     protected void onPostExecute(JSONObject strings) { 


      Log.i(LOG_TAG, strings.toString()); 

      try { 
       jsonArray = strings.getJSONArray("results"); 


      if (null != jsonArray) { 

       ArrayList<JSONObject> list = new ArrayList<JSONObject>(); 

       if (jsonArray != null) { 
        int len = jsonArray.length(); 
        for (int i=0;i<len;i++){ 
         list.add((JSONObject) jsonArray.get(i)); 
        } 
       } 

       imageAdapter = new ImageAdapter(getActivity(), list); 
      } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
  • Существует много больше этого класса фрагмента, но я просто включен, когда я возвращаю JSONObject из doInBackground() и в onPostExecute() я извлечь JSONArray из JSONObject и поместите каждый элемент из JSONArray в ArrayList<JSONObject> и отправьте его в мой пользовательский класс ArrayAdapter

ImageAdapter.class

  • GetCount было присвоено значение list.size(), где список не является нулевым, и это до сих пор не называется
  • Это было жёстко 20 (размер списка) и до сих пор не называется

Любые идеи, как решить эту проблему?

+1

Где вы звоните setAdapter?Убедитесь, что [this] (http://stackoverflow.com/questions/16338281/custom-adapter-getview-method-is-not-called/16338380#16338380) помогает – Blackbelt

+0

Я вызываю его в методе 'onCreateView' – Dan

ответ

1

После intializing ваш Adapter установить его на свой ListView

public class MainActivityFragment extends Fragment { 

private ImageAdapter imageAdapter; 

public class FetchMovieTask extends AsyncTask<String, Void, JSONObject> { 
    @Override 
    protected void onPostExecute(JSONObject strings) { 


     Log.i(LOG_TAG, strings.toString()); 

     try { 
      jsonArray = strings.getJSONArray("results"); 


     if (null != jsonArray) { 

      ArrayList<JSONObject> list = new ArrayList<JSONObject>(); 

      if (jsonArray != null) { 
       int len = jsonArray.length(); 
       for (int i=0;i<len;i++){ 
        list.add((JSONObject) jsonArray.get(i)); 
       } 
      } 

      imageAdapter = new ImageAdapter(getActivity(), list); 
      yourListView.setAdapter(imageAdapter); 
     } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    } 
} 
+0

Perfect :) Я установил адаптер в onCreateView, но объявил imageAdapter в onPostExecute. Когда я переместил его на onPostExecute, он сработал. Спасибо – Dan

+0

Ваш прием :). Пожалуйста, поддержите ответ тоже. :) –

0

После создания этого необходимо позвонить imageAdapter.notifyDataSetChanged(). Это уведомит адаптер для вызова getView()

UPDATE Установить адаптер на ListView, а затем notifyDataSetChanged

yourListView.setAdapter(imageAdapter); imageAdapter.notifyDataSetChanged()

+0

I попробовали это, но все равно не повезло – Dan

0

В соответствии с вашим c Я вижу, что вы назначаете свой адаптер на listview в методе onCreateView. К тому времени ваш адаптер не готов. Поэтому вам нужно обновить свой адаптер после добавления к нему данных.

Добавить

imageAdapter.notifyDataSetChanged(); 

После

imageAdapter = new ImageAdapter(getActivity(), list); 

в onPostExecute методом.

Смежные вопросы