切换TextView值

时间:2014-07-10 15:45:18

标签: java android xml textview

我只是使用Android制作一个简单的天气应用程序,我正在制作一个带有自定义列表视图的抽屉 - 它显示数据库中某个位置的城市,时间,当前温度和图标。但是,在我的ListView适配器中,当我设置textviews的值时,它会错误地显示出来。基本上,价值观正在转换。

前 - 如果我把芝加哥定为我的城市,它将显示温度应该是芝加哥。

DrawerListAdapter.java

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) context
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.drawer_list_item, null);
    }

    ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
    TextView city = (TextView) convertView.findViewById(R.id.city);
    TextView time = (TextView) convertView.findViewById(R.id.time);
    TextView temp = (TextView) convertView.findViewById(R.id.temp);

    icon.setImageResource(drawerListItem.get(position).getIcon());
    city.setText(drawerListItem.get(position).getCity());
    time.setText(drawerListItem.get(position).getTime());
    temp.setText(drawerListItem.get(position).getTemp());

    return convertView;
}

DrawerListItem.java

public class DrawerListItem {
int icon;
String city;
String time;
String temp;

public DrawerListItem(int icon, String city, String time, String temp) {
    super();
    this.icon = icon;
    this.city = city;
    this.time = time;
    this.temp = temp;
}

public int getIcon() {
    return icon;
}

public void setIcon(int icon) {
    this.icon = icon;
}

public String getCity() {
    return city;
}

public void setCity(String city) {
    this.city = city;
}

public String getTime() {
    return time;
}

public void setTime(String time) {
    this.time = time;
}

public String getTemp() {
    return temp;
}

public void setTemp(String temp) {
    this.temp = temp;
    }
}

drawer_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="58dp"
android:background="@drawable/list_selector"
android:minHeight="58dp" >

<ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:src="@drawable/cloudy" />

<TextView
    android:id="@+id/temp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:background="@drawable/temp_bg"
    android:text="75°"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textSize="25sp" />

<TextView
    android:id="@+id/time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/city"
    android:layout_alignTop="@+id/icon"
    android:text="3:17 PM"
    android:textColor="@color/White" />

<TextView
    android:id="@+id/city"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_below="@+id/time"
    android:layout_marginLeft="22dp"
    android:layout_toRightOf="@+id/icon"
    android:text="Chicago"
    android:textAppearance="?android:attr/textAppearanceLarge" />

1 个答案:

答案 0 :(得分:0)

问题的原因在于您创建DrawerListItem个实例。

以Liconshire为例。你正在调用构造函数:

new DrawerListItem(R.drawable.cloudy, "9:53 AM ,"73°", "Linconshire")

但是,您的构造函数如下所示:

DrawerListItem(int icon, String city, String time, String temp)

因此,您正在使用以下参数创建抽屉列表项:

  • icon:R.drawable.cloudy
  • city:"9:53 AM"
  • 时间:"73°"
  • temp:"Linconshire"

更改参数的顺序以匹配您在构造函数中指定的顺序,并且它将正确显示。例如,new DrawerListItem(R.drawable.cloudy, "Linconshire", "9:53 AM", "73°")