2015-10-29 2 views
0

Итак ... У меня есть фрагмент, содержащий ListView.Strange ... ListView показывает только часть данных

У меня также есть private ArrayList<ComicListItem> listViewData; Это определено внутри класса фрагментов. В этом списке я храню данные, чтобы отобразить их с помощью ListView.

У меня есть public class ListViewOfComicsAdapter extends ArrayAdapter<ComicListItem> тоже.

я заполнить listViewData с данными внутри

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) 

и данные там, я видел, с помощью отладчика.

Следующая вещь, которую я делаю:

@Override 
    public void onResume() 
    { 
     super.onResume(); 
     ArrayList<ComicListItem> itemArrayList = new ArrayList<>(); 
     if(listViewData != null) 
     { 
      for (ComicListItem cli : listViewData) 
       itemArrayList.add(cli); 
     } 
     // I added this one for test, and it is the only one that is shown inside ListView 
     itemArrayList.add(new ComicListItem(true, "aaaa", null, "eeee")); 


     listView = (ListView)getActivity().findViewById(R.id.list_view_comics);    
     adapter = new ListViewOfComicsAdapter(getContext(), R.id.list_view_comics, itemArrayList); 
     // adapter.notifyDataSetChanged(); // no change, really 
     listView.setAdapter(adapter); 
    } 

я копирую значения по одному в других ArrayList<ComicListItem>. Зачем? Поскольку у меня была такая же проблема ранее при передаче listViewData, что я заполнил конструктор ListViewOfComicsAdapter, поэтому я просто скопировал данные в itemArrayList вот так, и это сработало на короткое время (данные были видны).

Теперь только видимый элемент - это тот, который я добавил вручную (для целей тестирования). В отладчике я вижу 31 элемент в itemArrayList, и они не равны нулю.

Все данные, которые я добавляю в listViewData, есть, но не отображаются внутри ListView.

getView(int position, View convertView, ViewGroup parent) от адаптера называется только один раз.

У меня есть list_view_item.xml и элемент списка, который появляется, использует его.

Я испытываю боль, кто-то, пожалуйста, помогите.

ОБНОВЛЕНИЕ - код адаптера

public class ListViewOfComicsAdapter extends ArrayAdapter<ComicListItem> 
{ 
    Context mContext; 
    ComicListItem data[] = null; 

public ListViewOfComicsAdapter(Context context, int resource, ArrayList<ComicListItem> items) 
{ 
    super(context, resource, items); 
    mContext = context; 
    try 
    { 
     data = new ComicListItem[items.size()]; 

     for (int i = 0; i < items.size(); i++) 
      data[i] = items.get(i); 
    } 
    catch (Exception e) 
    { 
     Log.e("problem", "no items to display in framgent"); 
    } 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    boolean recycleView = true; 
    if(convertView == null) 
    { 
     // inflate the layout 
     LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
     convertView = inflater.inflate(R.layout.list_item_comic, parent, false); 
     recycleView = false; 
    } 
    // object item based on the position 
    ComicListItem objectItem = data[position]; 
    ComicStorageInfo info = new ComicStorageInfo(null, 0, position + 1, 1, objectItem.fileName); 
    TextView textViewItem = (TextView) convertView.findViewById(R.id.list_item_comic); 
    textViewItem.setText(objectItem.date); 
    if(!recycleView) 
    { 
     Drawable drawable = new BitmapDrawable(getContext().getResources(), App.getInstance().readImageFromInternalStorage(info.getFileName())); 
     textViewItem.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null); 
    } 
    else 
    { 
     ProgressBar progressBar = (ProgressBar)convertView.findViewById(R.id.comic_progressbar); 
     new ReadImageFromStorage(textViewItem, progressBar).execute(info.getFileName()); 
    } 
    return convertView; 
} 
} 
+0

Вы можете разместить код адаптера? – pgiitu

+0

У меня есть обновленный вопрос с кодом адаптера. – user2534306

ответ

0

Дело в том, что у меня есть 2 фрагменты и OnResume() из второй вызывается после того, как и написать его на первый. И они имеют одинаковый идентификатор, поэтому он всегда записывает первый фрагмент. Достаточно смутить меня.

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