反转列表项在getview()中给出了错误的位置

时间:2014-04-01 15:55:08

标签: listview arraylist reverse

我在Android中很新。我遇到了一个问题,我有一个适配器。我必须以相反的顺序填充我的列表,但是当位置没有反转为listItems时。 这是我的代码

public PageListAdapter(Context context) {
    super();
    this.context = context;
    arr = new ArrayList<String>();
    // FilesInFolder = GetFiles("/sdcard/Download");

    filePath = Environment.getExternalStorageDirectory() + "/openedpages/";
    file = new File(filePath);
    if (file.exists()) {

        filenew = file.listFiles();
        for (int i = 0; i < file.listFiles().length; i++) {

            arr.add(filenew[i].getName());

        }

    }
    Collections.reverse(arr);
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowview = inflater
                .inflate(R.layout.listelement, parent, false);
        pagename = (TextView) rowview.findViewById(R.id.listitem);
        //
        pagename.setText(arr.get(position));
        arrnum.add(position);
        return rowview;
    } else
        return convertView;

}

在这里我颠倒了我的arraylist ..但是listitems的位置是相反的顺序。新添加的项目没有获得位置0。 请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您不需要额外的列表arrpostion。您的arr已经按相反的顺序保留了项目。

只需设置文字:pagename.setText(arr.get(position));

第二个,您必须使用正确的数据填充回收的convertView(与创建新数据时的操作类似),当前返回时:

} else
        return convertView;

修好后,您的列表视图会显示您想要的内容。