[英]Array of ImageViews what's wrong?
我有一个带有20个ImageView的Activity,名为Level0 ... level20。 我想更改前10个ImageView的图像源。 我试过了,但是没有好结果。 请帮助我。
private ImageView [] lvlImgs;
private int unlocked=10;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.levels);
for(int i=0;i<unlocked;i++)
{
int id = getResources().getIdentifier("level"+i, "id", this.getPackageName());
lvlImgs[i]=(ImageView)findViewById(id);
lvlImgs[i].setImageResource(R.drawable.new_image_to_show);
}
}
您还应该发布Exception
或Error。
考虑到您发布的代码,我能理解的原因是
您没有初始化lvlImgs
数组,因为它应该是:
lvlImgs = new ImageView [unlocked];
这可能是应用程序崩溃的原因。
发布您的Exception
log-cat可能有助于我们理解问题。
感谢您的回答。 我发现了另一种方法:使用GridView和ImageAdapter类。 对于那些感兴趣的人:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private int unlocked=10;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return 20;
}
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(90, 50));
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
} else {
imageView = (ImageView) convertView;
}
if(position<unlocked){
imageView.setImageResource(R.drawable.gheta_med);
}else{
imageView.setImageResource(R.drawable.gheta_med_lock);
}
return imageView;
}
在我的活动中
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Log.i("item", ""+arg2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.