2015-03-02 2 views
0

В моей деятельности у меня есть один ImageViewImageView не загружается правильно

XML код:

<!-- FOTO LATERAL! --> 

        <ImageView 
         android:id="@+id/simbolo_raca" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 

         /> 
        <Button 
         android:id="@+id/button_save" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Ok. Seguinte Pergunta" 
         android:layout_gravity="right" 
         android:gravity="right" 
         android:paddingRight="30dip"> 
      </LinearLayout> 

Это активность:

public class QuestionarioActivityRaca extends Activity{ 
ImageView simbolo; 
int position; 
Button B_Save; 
List<Drawable> List_imagens = new ArrayList<Drawable>(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
simbolo = (ImageView) findViewById(R.id.simbolo_raca); 
B_Save = (Button) findViewById(R.id.button_save); 
position = 0; 
List_imagens.add(getResources().getDrawable(R.drawable.p1)); 
List_imagens.add(getResources().getDrawable(R.drawable.p2)); 
List_imagens.add(getResources().getDrawable(R.drawable.p3)); 
List_imagens.add(getResources().getDrawable(R.drawable.p4)); 
loadNewImage(position); 
B_Save.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     loadNewImage(position); 
     position++; 
     } 
    }); 
} 
// I Use this method to load the Image 
public loadNewImage(int Page) 
{  
new Thread(new Runnable(){ 
      @Override 
      public void run(){ 
       simbolo.post(new Runnable(){ 
        @Override 
        public void run() 
        { 
         simbolo.setImageDrawable(List_imagens.get(Page)); 
        } 
       }); 
      } 
     }).start(); 
} 

В первый раз я вызовите этот метод, (position = 0) изображение не загружается. После этого изображение загружается правильно.

Как мне сделать, чтобы загрузить изображение в первый раз?

(Я не могу загрузить изображение в XML, используя android:src="@drawable/x"), потому что изображение может быть различным в любое время. EDITED!

ответ

1

Существует ряд проблем с образцом кода, который вы опубликовали.

как пишущего междунар с заглавной I.

Int position; 

Не представляемого в качестве параметра с помощью метода в OnClick:

public void onClick(View v) { 
    loadNewImage(); 
    } 

И еще несколько как в вашем XML и код.

Есть ли особенная причина, по которой вы хотите запускать новую тему каждый раз для выполнения этой задачи? Если вам действительно нужен поток, вы должны объявить свой int как final в методе.

Однако вы должны получить желаемый результат с помощью кода-образца ниже. Вы должны изменить свой onClick, чтобы отправить соответствующий int для любой доступной вы хотите использовать.

Удачи.

public class testactivity extends ActionBarActivity { 

    ImageView simbolo; 
    int position; 
    Button B_Save; 
    List<Drawable> List_imagens = new ArrayList<>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_testactivity); 
     simbolo = (ImageView) findViewById(R.id.simbolo_raca); 
     B_Save = (Button) findViewById(R.id.button_save); 
     position = 0; 
     List_imagens.add(getResources().getDrawable(R.drawable.ic_drawer)); 
     List_imagens.add(getResources().getDrawable(R.drawable.ic_check)); 
     List_imagens.add(getResources().getDrawable(R.drawable.ic_action_add_package)); 
     List_imagens.add(getResources().getDrawable(R.drawable.ic_action_exception)); 
     loadNewImage(position); 
     final Random rand = new Random(); 
     B_Save.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       loadNewImage(rand.nextInt(4)); 
      } 
     }); 
    } 

    public void loadNewImage(final int page) 
    { 
     simbolo.setImageDrawable(List_imagens.get(page)); 
    } 
} 
1

первую очередь, прежде чем кнопка получает щелкнул вы вызываете эту функцию, чтобы загрузить исходное изображение с loadNewImage(position); при нажатии на кнопку вы вызовите эту функцию loadNewImage(); я предполагаю, что это работает, когда кнопка нажата, потому что этого loadNewImage(); метод нормально, и loadNewImage(int page); не в порядке, потому что это две разные функции.

Решение вашей проблемы, если вы хотите, чтобы целочисленный объект использовал Integer position, или зайдите с int position и, пожалуйста, отпустите нить. теперь ваш код будет работать

Смежные вопросы