2014-12-29 7 views
0

Я хочу, чтобы вызвать изображение из Реза/вытяжки папки, использующей ListAdapterИзменение изображения из ListAdapter

В настоящее время, я могу только получать и отображать информацию в виде текста.

Мой адаптер следующие

runOnUiThread(new Runnable() { 
       public void run() { 
        /** 
        * Updating parsed JSON data into ListView 
        * */ 
        ListAdapter adapter = new SimpleAdapter(
          ListagemHospitaisActivity.this, ListaHospitais, 
          R.layout.item_hospital, new String[] { TAG_PID, 
          TAG_NOME, TAG_LOTACAO}, 
          new int[] { R.id.pid, R.id.nome, R.id.lotacao }); 

        // updating listview 
        setListAdapter(adapter); 

       } 
      }); 

TAG_LOTACAO возвращает точное имя изображения я хочу показать.

ImageView Я хочу изменить это

<ImageView 
     android:id="@+id/imglotacao" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/l_9_1" 
     /> 

Как я попробовал метод ниже меня несколько проблем.

private List<Hospitais> ListaHospitais; // or what type this list is 

Вы ссылаетесь на ListaHospitais?

Кроме этого, <Hospitais> выдает сообщение об ошибке и говорит, чтобы создать класс. Что я делаю не так?

listData выдающий ошибку, а также, с просьбой создать локальную переменную

И здесь он также показывает ошибку, поскольку она не может решить метод.

Hospitais item = (Hospitais) ListaHospitais.get(position); 
holder.pid.setText(item.getPid()); 
holder.nome.setText(item.getNome()); 
+0

Возможный дубликат [Как показать изображение в ListView на основе информации, полученной с сервера?] (Http://stackoverflow.com/questions/27694564/how-to-show-an-image-in-listview-based -on-info-received-from-server) – Selvin

+0

Извините, должен был удалить другой. Я думаю, что это более ясно. –

ответ

2

Вы должны создать свой собственный адаптер, что-то вроде этого:

public class HospitaisAdapter extends BaseAdapter { 

    private List<Hospitais> ListaHospitais; // or what type this list is 
    private Context context; 

    private LayoutInflater layoutInflater; 

    public HospitaisAdapter (Context context, List<Hospitais> ListaHospitais) { 
     this.ListaHospitais= ListaHospitais; 
     this.context=context; 
     layoutInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public int getCount() { 
     return ListaHospitais.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return ListaHospitais.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = layoutInflater.inflate(R.layout.list_row, null); 
     /*the row layout should be the layout for a row from your listview, 
     containing your imageView and nome as well as pid data. 
     I will suppose pid and nome are Strings and are displayed in a TextView */ 

      holder = new ViewHolder(); 
      holder.pid= (TextView) convertView.findViewById(R.id.pid); 
      holder.nome= (TextView) convertView.findViewById(R.id.nome); 
      holder.image= (ImageView) convertView.findViewById(R.id.imglotacao); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     Hospitais item = (Hospitais) ListaHospitais.get(position); 

     holder.pid.setText(item.getPid()); 
     holder.nome.setText(item.getNome()); 

     holder.image.setImageDrawable(context.getResources().getDrawable(R.drawable.image_name)); 


     return convertView; 
    } 

    static class ViewHolder { 
     TextView pid; 
     TextView nome; 
     ImageView image; 

    } 
} 

И чем использовать адаптер что-то вроде этого:

listView.setAdapter(new HospitaisAdapter(this,ListaHospitais)); 

Надеется, что это помогает.

+0

Спасибо @HaneloreIanoseck ... Я попробую это, и я дам вам знать. –

+0

Я пробовал ваше решение и получил некоторую ошибку. Я отредактировал свой вопрос с проблемами, чтобы он мог быть лучше отформатирован. –

+1

Вы должны заменить listData ListaHospitais. Я отредактировал свой ответ. Что касается списка ListaHospitais, я просто предположил, что этот тип является списком для этого списка. Конечно, если тип Hospitais не существует, он скажет, что вам нужно создать этот класс. Вам нужно заменить тип ListaHospitais на тип, который вы используете в своем исходном коде. –

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