我在这里错过了什么吗?
我完全按照本页面上的说明(以及其他一些教程),但他们似乎总是缺少一些关键信息,因为它们不能开箱即用。
我添加了一堆似乎丢失的软件包,但现在我被卡住了。
http://developer.android.com/resources/tutorials/views/hello-gridview.html
描述资源路径位置类型 转换为Dalvik格式失败,错误1 HelloGrid未知安卓包装问题
每一个drawable.sample_ *引用都有一大堆这些
描述资源路径位置类型 R.drawable.sample_0无法解析ImageAdapter.java / HelloGrid / src / com / example / ImageAdapter第51行Java问题
package com.example.HelloGrid;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import com.example.ImageAdapter.ImageAdapter;
public class HelloGrid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGrid.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
}
package com.example.ImageAdapter;
import android.R;
import android.R.drawable;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
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_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
}
如您所见,我在/ drawable目录中加载了所有图像
答案 0 :(得分:3)
描述资源路径位置类型R.drawable.sample_0无法解析ImageAdapter.java / HelloGrid / src / com / example / ImageAdapter第51行Java问题
您缺少可绘制的资源。 instructions supplied in the tutorial中的步骤#2中介绍了这一点。
答案 1 :(得分:2)
删除导入android.R;
这使Eclipses'R;
混乱这就是它找不到图像的原因。
此外,您只需将其放在res中预先创建的可绘制目录中(例如drawable-hdpi等)
答案 2 :(得分:2)
我也有这个问题,并通过修复此行来解决它:
Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
到
Toast.makeText(HelloGridViewActivity.this, "" + position, Toast.LENGTH_SHORT).show();
答案 3 :(得分:1)
我有解决方案:
package com.gridview.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
import android.widget.BaseAdapter;
import android.content.Context;
import android.view.ViewGroup;
import android.widget.ImageView;
public class HelloGridView extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridView.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_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
}
}
答案 4 :(得分:1)
添加进口为我解决了这个问题 我发现实际上在Eclipse中它们可以自动导入:
“提示:将示例代码粘贴到Eclipse项目后,按Ctrl(或Cmd)+ Shift + O导入所需的包”
希望这可以刷新错过的内容。
答案 5 :(得分:0)
看起来教程缺少一些包信息,但是如果你正在使用eclipse,它应该为你处理大部分内容。