TextView值被切换

user2300851

我只是使用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;
    }
}

cabinet_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" />

布莱恩·赫伯斯特(Bryan Herbst)

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

以利康郡为例。您正在这样调用构造函数:

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

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

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

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

  • 图标: R.drawable.cloudy
  • 城市: "9:53 AM"
  • 时间: "73°"
  • 温度: "Linconshire"

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章