GridView 反转

GridView reverse

我的 GridView 中有在线数据库中的图片,我希望以相反的顺序显示它们。 所以我希望当我将新图片添加到我的数据库时成为 GridView 中的第一张。

我试图找到答案,但在 Whosebug 上没有任何相关信息。

这是我的 ListViewAdapter:

public class GetMovieImagesListViewAdapter extends BaseAdapter {

private JSONArray dataArray;
private Activity activity;

private static final String baseUrlForImage = "http://google.com";

private static LayoutInflater inflater = null;

public GetMovieImagesListViewAdapter(JSONArray jsonArray, Activity a){

    this.dataArray = jsonArray;
    this.activity = a;

    inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}


@Override
public int getCount() {
    return this.dataArray.length();
}

@Override
public Object getItem(int position){
    return position;
}

@Override
public long getItemId(int position){
    return position;
}

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

    final ListCell cell;
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.get_images_from_movies_list_cell, null);
        cell = new ListCell();

        cell.MovieImages = (ImageView) convertView.findViewById(R.id.movie_images_id);

        convertView.setTag(cell);
    } else {
        cell = (ListCell) convertView.getTag();
    }

    try {
        JSONObject jsonObject = this.dataArray.getJSONObject(position);

        String nameOfImage = jsonObject.getString("image");

        String urlForImageInServer = baseUrlForImage + nameOfImage;

        new AsyncTask<String, Void, Bitmap>(){

            @Override
            protected Bitmap doInBackground(String... params)
            {
                String url = params[0];
                Bitmap icon = null;

                try
                {
                    InputStream in = new URL(url).openStream();
                    icon = BitmapFactory.decodeStream(in);
                } catch (IOException e) {
                    e.printStackTrace();
                }

                return icon;
            }

            @Override
            protected void onPostExecute(Bitmap result)
            {
                cell.MovieImages.setImageBitmap(result);
            }
        }.execute(urlForImageInServer);


    } catch (JSONException e) {
        e.printStackTrace();
    }
    return convertView;

}
private class ListCell{

    private ImageView MovieImages;
}}

您可以通过从数组末尾开始并向后工作到开头来获取每个 JSONObject:

JSONObject jsonObject = this.dataArray.getJSONObject(getCount() - position - 1);

您收到的结果尝试以相反的顺序遍历它。 您的位图结果数据似乎是您获得的单一数据。我期待您在查询在线数据库时在 onPostExecute() 方法参数中获得的数据数组或数组列表。 例如,如果您以 onPostExecute(ArrayList result) 的形式获取数据,那么您可以简单地以相反的顺序迭代 'result' 数据,以便以相反的顺序填充您的网格视图。

查看 Iterate arraylist in reverse order