Массив ImageViews, что не так? - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть активность с 20 ImageViews с именем level0 ... level20.Я хочу изменить источник изображения для первых 10 изображений.Я попробовал это, но без хороших результатов.помогите мне.

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);  
  }      
}

Ответы [ 2 ]

0 голосов
/ 02 января 2012

Спасибо за ответ.Я нашел другой способ для этого: использовать 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); 
0 голосов
/ 31 декабря 2011

Вы также должны опубликовать свой Exception или Ошибка.

Учитывая ваш опубликованный код, я могу понять, почему

вы не инициализируете массив lvlImgs так, как должно быть:

lvlImgs = new ImageView [unlocked];

Это может быть причиной сбоя приложения.

Размещение вашего Exception log-cat может помочь нам понять проблему.

...