2011-04-06 8 views
8

Necesito hacer una vista de lista con una imagen a la izquierda, un título flotando a la derecha de esa imagen y una descripción debajo de eso. He comprobado la vista de lista en los documentos pero parece que no puedo encontrar un ejemplo para esto. Tengo una vista de pestaña como se define en XML (según las pestañas de ejemplo de Android1) con una vista de lista como el contenido de la primera pestaña. Sin embargo, quiero agregar el contenido a través de un suministro de noticias RSS a la vista de lista en el código.¿Vista de lista con título, imagen y texto?

Estaba pensando en usar una vista web usando una cadena de inyección html, pero cómo insertaría imágenes de la carpeta dibujable. (Estas imágenes son sólo un "icono de noticias" almacenado localmente, no una imagen de Internet)

Lo siento si es un poco de una pregunta nooby, pero cualquier ayuda apreciada :)

Respuesta

10

supongo que la estructura lo que describes se refiere al contenido de los elementos ListView. Puede lograr esto definiendo un diseño para el artículo individual. El código siguiente ha trabajado para mí en una situación similar:

<?xml version="1.0" encoding="UTF-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:padding="6dip" android:layout_height="?android:attr/listPreferredItemHeight"> 
    <ImageView 
     android:id="@+id/result_icon"   
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:layout_marginRight="6dip"   
     android:src="@drawable/image1"/> 
    <TextView 
     android:id="@+id/result_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"   
     android:layout_toRightOf="@id/result_icon" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true"   
     android:layout_alignWithParentIfMissing="true"     
     android:gravity="center_vertical" 
     android:text="Title" /> 
    <TextView 
     android:id="@+id/result_second_line" 
     android:layout_width="fill_parent" 
     android:layout_height="26dip"  
     android:layout_toRightOf="@id/result_icon" 
     android:layout_below="@id/result_name" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true"   
     android:singleLine="true" 
     android:ellipsize="marquee" 
     android:text="Second line" /> 
</RelativeLayout> 

este caso es necesario extender una BaseAdapter para usar con su ListActivity. Tendrá que inflar el diseño y llenarlo con datos de la fuente RSS.

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Result result = this.results.get(position); 


    LayoutInflater inflater = (LayoutInflater) context.getSystemService(
             Context.LAYOUT_INFLATER_SERVICE); 
    RelativeLayout view = (RelativeLayout) 
      inflater.inflate(R.layout.result_item, null, false); 

    ImageView image = (ImageView) view.findViewById(R.id.result_icon); 
    image.setImageResource(result.imageResource); 

    TextView name = (TextView) view.findViewById(R.id.result_name); 
    name.setText(result.location); 

    TextView secondLine = (TextView) view.findViewById(R.id.result_second_line); 
    secondLine.setText(result.shortDescription); 

    return view; 
} 
+0

gracias esto era útil –

+1

Debo señalar que el archivo RelativeLayout probablemente se guarda como result_item.xml en el proyecto/res/layout / –

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 





    <GridLayout 
     android:id="@+id/gridLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1.07" 
     android:columnCount="2" > 

     <ImageView 
      android:id="@+id/chkItemImage" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_column="0" 
      android:layout_gravity="left" 
      android:layout_row="0" 
      android:layout_rowSpan="3" 
      android:src="@drawable/ic_launcher" 
      android:scaleType="fitXY" /> 

     <TextView 
      android:id="@+id/chkItemName" 
      android:layout_column="1" 
      android:layout_gravity="left" 
      android:layout_row="0" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

     <TextView 
      android:id="@+id/chkItemDescription" 
      android:layout_column="1" 
      android:layout_gravity="left" 
      android:layout_row="1" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

     <TextView 
      android:id="@+id/chkItemPrice" 
      android:layout_column="1" 
      android:layout_gravity="left" 
      android:layout_row="2" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 


    </GridLayout> 

0

que necesita para diseñar elementos de ListView para contener TextView y imageview.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<ImageView 
android:id="@+id/imageView" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginLeft="40dp" 
android:layout_gravity="center_vertical" 
android:text="TextView" /> 
<TextView 
android:id="@+id/textView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginLeft="40dp" 
android:layout_gravity="center_vertical" 
android:text="TextView" /> 

</LinearLayout> 

Luego tiene que diseñar el diseño de la vista de lista. Luego necesita inflar el diseño de su fila al obtener un inflador de diseño.

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View single_row = inflater.inflate(R.layout.list_row, null, 
true); 
Cuestiones relacionadas