Динамическое изменение фона изображения - PullRequest
3 голосов
/ 24 октября 2011

У меня есть набор из 10 изображений в моем макете. Я дал им последовательный идентификатор также как

android:id="@+id/pb1"

android:id="@+id/pb2"

Теперь я хочу динамически менять фон.

    int totalPoi = listOfPOI.size();
    int currentPoi = (j/totalPoi)*10;
    for (i=1;i<=currentPoi;i++) {
          imageview.setBackgroundResource(R.drawable.progressgreen);
}

Теперь внутри цикла for я хочу динамически установить фон просмотра изображения. i, e, если значение currentpoi равно 3, фон 3 представлений изображения должен быть изменен. Сколько раз цикл for повторяет, что фон многих изображений должен быть изменен. Надеюсь, теперь вопрос ясен.

Примечание: у меня есть только 1 изображение прогресса, для которого нужно установить 10 просмотров

Ответы [ 6 ]

5 голосов
/ 24 октября 2011

Наконец я сделал это следующим образом,

Я поместил все идентификаторы в массиве как

int[] imageViews = {R.id.pb1, R.id.pb2,R.id.pb3,R.id.pb4,R.id.pb5,R.id.pb6,R.id.pb7,R.id.pb8,R.id.pb9,R.id.pb10};

Сейчас:

int pindex = 0;

for (pindex; pindex <currentPoi; pindex++) {

    ImageView img = (ImageView) findViewById(imageViews[pindex]) ;
    img.setImageResource(R.drawable.progressgreen);
}

Теперь ямогу динамически менять изображения.

@ goto10.Спасибо за вашу помощь.Я буду отлаживать вашу точку зрения, чтобы увидеть, что пошло не так в моей стороне

3 голосов
/ 24 октября 2011

Создать массив ImageView:

ImageView views[] = new ImageView[10];
views[0] = (ImageView)findViewById(R.id.pb1);
...
views[9] = (ImageView)findViewById(R.id.pb10);

Теперь повторяем цикл, чтобы установить фон изображений следующим образом:

for (i=1;i<=currentPoi;i++) 
{
    views[i-1].setBackgroundResource(R.drawable.progressgreen);
}
1 голос
/ 24 октября 2011

вы можете сделать это, установив имя рисованного объекта примерно так: img_1, img_2, img_3 ...

for (i=1;i<=currentPoi;i++)
{
ImageView imageview=(ImageView) findViewById(getResources().getIdentifier("imgView_"+i, "id", getPackageName()));
imageview.setImageResource(getResources().getIdentifier("img_"+i, "drawable",  getPackageName()));
}
0 голосов
/ 24 октября 2011

Вы можете создать массив ваших ImageViews и затем изменить их в цикле for.

ImageView views[] = new ImageView[10];
views[0] = (ImageView)findViewById(R.id.imageView0);
...
views[9] = (ImageView)findViewById(R.id.imageView9);

, а затем изменить цикл for на:

for (i=1;i<=currentPoi;i++) {
   views[currentPoi].setBackgroundResource(R.drawable.progressgreen);
}

Массивы начинаются с индекса0, поэтому убедитесь, что здесь нет единой ошибки.

0 голосов
/ 24 октября 2011

Попробуйте этот код ..... Создать изображение Array ..

private Integer[] mThumbIds = { R.drawable.bg_img_1, R.drawable.bg_img_2,
        R.drawable.bg_img_3, R.drawable.bg_img_4, R.drawable.bg_img_5 };

А чем изменить свой код

int totalPoi = listOfPOI.size();
int currentPoi = (j/totalPoi)*10;
for (i=1;i<=currentPoi;i++) {
      imageview.setBackgroundResource(mThumbIds[i]);}
0 голосов
/ 24 октября 2011

Вам нужно будет указать свои последовательные идентификаторы ImageViews, такие как "@ + id / pb1" и "@ + id / pb2" и т. Д. Затем вы можете получить каждый из них в цикле следующим образом:

for (i=1;i<=currentPoi;i++) {
    // Find the image view based on it's name. We know it's pbx where 'x' is a number
    // so we concatenate "pb" with the value of i in our loop to get the name
    // of the identifier we're looking for. getResources.getIdentifier() is able to use
    // this string value to find the ID of the imageView
    int imageViewId = getResources().getIdentifier("pb" + i, "id", "com.your.package.name");

    // Use the ID retrieved in the previous line to look up the ImageView object
    ImageView imageView = (ImageView) findViewById(imageViewId);

    // Set the background for the ImageView
    imageView.setBackgroundResource(R.drawable.progressgreen);
}

Замените com.your.package.name пакетом вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...