2012-02-28 35 views
0

ImageViewとTextViewを含むListViewにデータを設定しています。クラッシュはしませんが、何も表示されません。私は多くのチュートリアルを見ていますが、私が使用しているのと同じコードを表示しているようです。ImageViewとTextViewのListViewに何も表示されません

これはrow.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/fondo_fila_click" 
    android:orientation="horizontal" 
    android:padding="5dip" > 

    <LinearLayout android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="3dip" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/borde_foto" 
     android:layout_marginRight="5dip"> 

     <ImageView 
      android:id="@+id/imagen_marca" 
      android:layout_width="50dip" 
      android:layout_height="50dip"/> 

    </LinearLayout> 

    <TextView 
     android:id="@+id/nombre" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textColor="#040404" 
     android:typeface="sans" 
     android:textSize="15dip" 
     android:textStyle="bold"/> 


</RelativeLayout> 

とコードです:それはテキストや画像が表示されない理由を

public class SATActivity extends SherlockListActivity { 

private IconListViewAdapter adaptador; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ArrayList m_fabricante = new ArrayList(); 
     this.adaptador = new IconListViewAdapter(this, R.layout.fila, m_fabricante); 
     setListAdapter(this.adaptador);   
     iniciaFabricantes();   
    } 

    @SuppressWarnings("unchecked") 
    private void iniciaFabricantes() { 
     ArrayList m_fabricante = new ArrayList(); 

     try { 
      Fabricante acer = new Fabricante(); 
      acer.setNombre("Acer"); 
      acer.setFoto(R.drawable.acer); 
      Fabricante apple = new Fabricante(); 
      apple.setNombre("Apple"); 
      apple.setFoto(R.drawable.apple); 

      m_fabricante.add(acer); 
      m_fabricante.add(apple); 
     } catch (Exception e) { 

     } 

     adaptador.notifyDataSetChanged(); 
    } 

    public class IconListViewAdapter extends ArrayAdapter<Fabricante> { 

     private ArrayList<Fabricante> items; 

     public IconListViewAdapter(Context context, int textViewResourceId, ArrayList<Fabricante> items) { 
      super(context, textViewResourceId, items); 
      this.items = items; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 
       LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.row, null); 
      } 

      Fabricante o = items.get(position); 
      if (o != null) { 

       //poblamos la lista de elementos 

       TextView tt = (TextView) v.findViewById(R.id.nombre); 
       ImageView im = (ImageView) v.findViewById(R.id.imagen_marca); 

       if (im!= null) { 
        im.setImageResource(o.getFoto()); 
       }  

       if (tt != null) {    
        tt.setText(o.getNombre());        
       }              
      } 
      return v; 
     } 
    } 
} 

誰でも知っていますか?

if (im!= null) { 
    Drawable d = context.getResources().getDrawable(o.getFoto()); 
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());//must require 

    if(d!=null) 
    im.setImageDrawable(d); 
    else 
    Log.w("listview", "drawable is not available"); 
} 

うまくいけば、それは動作するはずです:

おかげで、あなたのgetViewメソッド方法で

答えて

1

は1以下に、あなたのアダプタクラスを変更してみてください:

public class IconListViewAdapter extends ArrayAdapter<Fabricante> { 

     private ArrayList<Fabricante> items; 
     LayoutInflater mInflater; 

     public IconListViewAdapter(Context context, int textViewResourceId, ArrayList<Fabricante> items) { 
      super(context, textViewResourceId, items); 
      this.items = items; 
      mInflater = LayoutInflater.from(context); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      final ViewHolder holder; 

      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.row, null); 
       holder = new ViewHolder(); 

       holder.mTextView=(TextView)convertView.findViewById(R.id.nombre); 
       holder.mImageView=(ImageView)convertView.findViewById(R.id.imagen_marca); 
       convertView.setTag(holder); 
      } 
      else 
       holder=(ViewHolder)convertView.getTag(); 

      Fabricante o = items.get(position); 
      if (o != null) { 

       //poblamos la lista de elementos 

       holder.mImageView.setImageResource(o.getFoto()); 

       holder.mTextView.setText(o.getNombre());        

      } 
      return convertView; 
     } 
     static class ViewHolder 
     {     
      TextView mTextView; 
      ImageView mImageView; 
     }  

    } 
0

は、次のように変更します。

+0

このコードはいけない仕事、私は(d)のim.setimagedrawableを置くが、その同じ結果 – colymore

+0

は私の更新の答えを確認してください。 – waqaslam

+0

何もせず、logcatはエラーを表示しません.. – colymore

関連する問題