2015-09-26 76 views
0

我跟随this教程,了解如何向列表视图中的单个列表元素添加标题,文本视图id/txtTitle和图像视图id/imgIcon如何添加第三个文本视图以使用自定义列表适配器列出视图元素

我修改了教程代码以合并第三个文本视图id/txtTitle2,但是我仍然只能看到图像视图id/imgIcon和原始文本视图id/txtTitle。此外,列表视图好像它是更大的,或者放大,这是我的代码修改的结果。

如何解决的代码,所以我看到没有大小失真的第三个文本看法?

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="0dp" 
    android:paddingRight="0dp" 
    android:paddingTop="0dp" 
    android:paddingBottom="0dp" 
    tools:context=".MainActivity"> 


    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 

listview_item_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp"> 

    <ImageView android:id="@+id/imgIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:layout_marginRight="15dp" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" /> 

    <TextView android:id="@+id/txtTitle" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:textStyle="bold" 
     android:textSize="22dp" 
     android:textColor="#000000" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" /> 

    <TextView android:id="@+id/txtTitle2" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:textStyle="bold" 
     android:textSize="22dp" 
     android:textColor="#000000" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" /> 

</LinearLayout> 

自定义列表适配器WeatherAdapter extends ArrayAdapter<Weather>

public class WeatherAdapter extends ArrayAdapter<Weather>{ 

    Context context; 
    int layoutResourceId; 
    Weather data[] = null; 

    public WeatherAdapter(Context context, int layoutResourceId, Weather[] data) { 
     super(context, layoutResourceId, data); 
     this.layoutResourceId = layoutResourceId; 
     this.context = context; 
     this.data = data; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     WeatherHolder holder = null; 

     if(row == null) 
     { 
      LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 

      holder = new WeatherHolder(); 
      holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon); 
      holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle); 
      holder.txtTitle2 = (TextView)row.findViewById(R.id.txtTitle2); 

      row.setTag(holder); 
     } 
     else 
     { 
      holder = (WeatherHolder)row.getTag(); 
     } 

     Weather weather = data[position]; 
     holder.txtTitle2.setText(weather.title2); 
     holder.txtTitle.setText(weather.title); 
     holder.imgIcon.setImageResource(weather.icon); 

     return row; 
    } 

    static class WeatherHolder 
    { 
     ImageView imgIcon; 
     TextView txtTitle; 
     TextView txtTitle2; 
    } 
} 

Weather

public class Weather { 
    public int icon; 
    public String title; 
    public String title2; 

    public Weather(){ 
     super(); 
    } 

    public Weather(int icon, String title, String title2) { 
     super(); 
     this.icon = icon; 
     this.title = title; 
     this.title2 = title2; 
    } 
} 

回答

1

在你排布置的两个第二和第三个文本视图的宽度设置为填充_父..所以在这种情况下,第二TextView的占用屏幕的整个宽度,以及第三TextView中没有剩余空间..只是改变这些属性为wrap_content,或使用权,而不是..

+0

谢谢。有一个问题的暗示。任何想法为什么我不能给ImageView添加权重?重量只能用于TextViews。 –

+0

我认为这个清单是我自己的。谢谢。 –

+0

您也可以为ImageView添加权重。它的工作原理与TextView完全相同。在处理权重之前,您需要理解几件事情。如果您分配权重只是一个视图两枚,它会占用所有可用的第二个观点已采取了后面的空格,它需要的空间。此外,它最好设置时权重分配给它0dp视图的宽度/高度。 – Rachit

相关问题