Android 在网格视图中显示图片
我正在尝试使用Gridview显示我放在drawable文件夹中的图片。我犯了一些错误。我的代码和错误如下所示Android 在网格视图中显示图片,android,Android,我正在尝试使用Gridview显示我放在drawable文件夹中的图片。我犯了一些错误。我的代码和错误如下所示 package com.newapp; import android.R; import android.R.drawable; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.
package com.newapp;
import android.R;
import android.R.drawable;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;/*Error here: main cannot be resolved or is not a field*/
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);/*Error here: main cannot be resolved or is not a field*/
GridView gridview = (GridView) findViewById(R.id.photogrid);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.sample_0, /*Error here: sample_0 cannot be resolved and is not a field*/
R.drawable.sample_1,/*Error here: sample_1 cannot be resolved and is not a field*/
R.drawable.sample_2,/*Error here: sample_2 cannot be resolved and is not a field*/
R.drawable.sample_3,/*Error here: sample_3 cannot be resolved and is not a field*/
R.drawable.sample_4,/*Error here: sample_4 cannot be resolved and is not a field*/
R.drawable.sample_5/*Error here: sample_5 cannot be resolved and is not a field*/,
R.drawable.sample_6,
/*Error here: sample_6 cannot be resolved and is not a field*/
};
}
package.com.newapp;
导入android.R;
导入android.R.drawable;
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.GridView;
导入android.widget.ImageView/*此处错误:无法解析main或main不是字段*/
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
公共类MainActivity扩展了活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);/*此处错误:无法解析main或main不是字段*/
GridView GridView=(GridView)findViewById(R.id.photogrid);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
Toast.makeText(MainActivity.this,“+”位置,Toast.LENGTH_SHORT.show();
}
});
}
}
公共类ImageAdapter扩展了BaseAdapter{
私有上下文;
公共图像适配器(上下文c){
mContext=c;
}
public int getCount(){
返回mThumbIds.length;
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
//为适配器引用的每个项目创建新的ImageView
公共视图getView(int位置、视图转换视图、视图组父视图){
图像视图图像视图;
如果(convertView==null){//如果它没有被回收,初始化一些属性
imageView=新的imageView(mContext);
setLayoutParams(新的GridView.LayoutParams(85,85));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(8,8,8,8);
}否则{
imageView=(imageView)convertView;
}
setImageResource(mThumbIds[position]);
返回图像视图;
}
//参考我们的图像
私有整数[]mThumbIds={
R.drawable.sample_0,/*此处出现错误:无法解析sample_0且不是字段*/
R.drawable.sample_1,/*此处出现错误:无法解析sample_1,它不是字段*/
R.drawable.sample_2,/*此处出现错误:sample_2无法解析,并且不是字段*/
R.drawable.sample_3,/*此处出现错误:无法解析sample_3且不是字段*/
R.drawable.sample_4,/*此处出现错误:无法解析sample_4,并且不是字段*/
R.drawable.sample_5/*此处错误:无法解析sample_5,且不是字段*/,
R.drawable.sample_6,
/*此处错误:无法解析示例_6,它不是字段*/
};
}
有人能告诉我是什么导致了这些问题吗?任何帮助都将不胜感激。
提前感谢这里是您的第一个问题:
导入android.R
不要导入它,因为这是android系统的R包,而不是您自己项目的R文件,因此无法识别main,因为您在android.R包中为main引用的R不存在
如果删除此导入,“main”将被识别,因为您自己的R文件将被引用。同样的规则适用于ImageAdapter。如果您删除导入:
import android.R.drawable
您将避免在本课程中遇到的问题。谢谢Hakan,这确实帮助我清除了我代码中的大部分错误。然而,当我导入android.widget.AdapterView.OnItemClickListener时,我现在遇到了一个错误,它说main无法解析或不是字段。你能帮我解决这个问题吗?你能试着用“gridview.setOnItemClickListener(新的OnItemClickListener()”替换“gridview.setOnItemClickListener(新的AdapterView.OnItemClickListener()”吗。这会改变吗?另外,只需导入android.widget.AdapterView。不要导入android.widget.AdapterView.OnItemClickListener,因为这不起作用。如果您发现我的答案是解决方案,请您将其标记为解决方案(绿色勾号)。这将非常有帮助,谢谢。