我只是使用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" />
答案 0 :(得分:0)
问题的原因在于您创建DrawerListItem
个实例。
以Liconshire为例。你正在调用构造函数:
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°")