2015-11-23 2 views
0

У меня есть список изображений с длиной динамического списка, у меня есть только 3 изображения, однако изображения должны быть установлены только на каждом элементе. Значение IF состояния в порядке, OFFLINE или PENDING, как я могу использовать IF ELSE IF и ELSE, чтобы установить один из 3-х изображений в каждом представлении список элементов, образец моего кода ниже:Set Image ListView With If Statement

Integer[] imageId = { 
      R.drawable.round_green, 
      R.drawable.round_red, 
      R.drawable.round_grey, 
     }; 

ContactsAdapter adapter = new ContactsAdapter(this, itemTitle, itemStatus, imageId); 
list.setAdapter(adapter); 
list.setOnItemClickListener(this);  

public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 

      View row=convertView; 
      if(row==null) 
      { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.activity_item, parent, false);  
      } 

      TextView tvTitle = (TextView) row.findViewById(R.id.Title); 
      TextView tvStatus = (TextView) row.findViewById(R.id.Status); 
      ImageView imageView = (ImageView) row.findViewById(R.id.imageView); 

      tvTitle.setText(Title.get(position)); 
      tvStatus.setText(Status.get(position)); 
      imageView.setImageResource(imgid[position]); //this must set either image A or B or C depending on value of text view status which can either be OK, OFFLINE or PENDING 

      return row; 
      } 
+0

, если вы используете пользовательский список, затем укажите код метода getView() – warlock

+0

, отредактированный для отображения метода getView() – user5174952

+0

Где вы просматриваете статус, я думаю, этот код поместит первое изображение в первое положение второго изображения на вторую позицию и так далее – warlock

ответ

4

можно использовать IF ELSE IF и ELSE, чтобы установить один из 3-х изображений в каждом списке Просмотреть товары

Мы можем сделать это без использования if-else лестница, используя HashMap.

Используйте OK, ВНЕ или ОЖИДАНИЕ в качестве ключа и drawable идентификаторами как значения в HashMap:

Map<String, Integer> drawableMap = new HashMap<String, Integer>(); 
drawableMap.put("ok",R.drawable.round_green); 
drawableMap.put("pending",R.drawable. round_grey); 
drawableMap.put("offline",R.drawable. round_red); 

Теперь использовать Status.get(position) в качестве ключа для получения Drawable ID:

imageView.setImageResource(drawableMap.get(Status.get(position).toLowerCase())); 
+0

согласился с этим. Вы даже можете использовать статус проверки положения переключателя и использовать выталкиваемый напрямую. Я не понимаю, почему вы должны использовать массив, когда вы проходите финальные идентификаторы – JesusS

0

В адаптере ContactsAdapter получил внутри метода getView и сделать условие, подобное

if(value.equal("OK")) 
{ 
//set your image... 
} 
else if(value.equal("OFFLINE")) 
{ 
//set your image... 
} 
else if(value.equals(PENDING)) 
{ 
//set your image... 
}