奇怪...ListView 只显示部分数据

Strange... ListView is showing just part of the data

所以...我有包含 ListView 的 Fragment。

我也有 private ArrayList<ComicListItem> listViewData; 是在片段 class 中定义的。在该列表中,我存储数据以使用 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 中复制了数据,并且工作了很短的时间(数据可见).

现在,唯一可见的项目是我手动添加的项目(用于测试目的)。在调试器中,我在 itemArrayList 中看到 31 项,它们不为空。

我添加到 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;
}
}

问题是我有 2 个片段,第二个片段的 OnResume() 在之后被调用,它覆盖第一个片段。并且它们具有相同的 ID,因此它始终写入第一个片段。够糊涂了。