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
我的 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