gpt4 book ai didi

java - 从 GridViewAdapter 获取图像时出错

转载 作者:行者123 更新时间:2023-12-01 12:39:29 24 4
gpt4 key购买 nike

尝试将图片放入 GridView 时遇到两个错误

ImageItem item = data.get(position);

我的错误:

Error:(42, 34) error: incompatible types
required: ImageItem
found: Object

还有

 TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);

我的错误:

Error:(29, 60) error: cannot find symbol variable array

完整代码:

MainActivity.java

import java.util.ArrayList;
import android.app.Activity;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.GridView;


public class MainActivity extends Activity {
private GridView gridView;
private GridViewAdapter customGridAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

gridView = (GridView) findViewById(R.id.gridView);
customGridAdapter = new GridViewAdapter(this, R.layout.row_grid, getData());
gridView.setAdapter(customGridAdapter);
}

private ArrayList getData() {
final ArrayList imageItems = new ArrayList();
// retrieve String drawable array
TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
for (int i = 0; i < imgs.length(); i++) {
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
imgs.getResourceId(i, -1));
imageItems.add(new ImageItem(bitmap, "Image#" + i));
}

return imageItems;

}

}

GridViewAdapter.Java

 import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class GridViewAdapter extends ArrayAdapter {
private Context context;
private int layoutResourceId;
private ArrayList data = new ArrayList();

public GridViewAdapter(Context context, int layoutResourceId,
ArrayList data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = null;

if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
//holder.imageTitle = (TextView) row.findViewById(R.id.text);
holder.image = (ImageView) row.findViewById(R.id.image);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}

ImageItem item = data.get(position);
//holder.imageTitle.setText(item.getTitle());
holder.image.setImageBitmap(item.getImage());
return row;
}

static class ViewHolder {
//TextView imageTitle;
ImageView image;
}
}

ImageItem.java

import android.graphics.Bitmap;


public class ImageItem {
private Bitmap image;
private String title;

public ImageItem(Bitmap image, String title) {
super();
this.image = image;
this.title = title;
}

public Bitmap getImage() {
return image;
}

public void setImage(Bitmap image) {
this.image = image;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}

最佳答案

我知道这篇文章是不久前发布的,但以防万一其他人遇到与我相同的问题,这就是我解决问题的方法。

我也遇到了同样的问题。我花了一段时间才弄清楚这一点,但有 2 个地方需要更新代码才能解决此问题。

在 GridViewAdapter.Java 中进行以下更改

之前...

private ArrayList data = new ArrayList();

之后...

private ArrayList<ImageItem> data = new ArrayList();

之前...

public GridViewAdapter(Context context, int layoutResourceId,
ArrayList data) {

之后...

public GridViewAdapter(Context context, int layoutResourceId,
ArrayList<ImageItem> data) {

希望这会有所帮助!

关于java - 从 GridViewAdapter 获取图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com