繁体   English   中英

ImageViews数组出了什么问题?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM