2014-07-10 81 views
0

我只是在使用Android製作一個簡單的天氣應用程序,並且我正在製作一個帶有自定義列表視圖的抽屜 - 它顯示數據庫中某個位置的城市,時間,當前溫度和圖標。但是,在我的ListView適配器中,當我設置textviews的值時,它出現錯誤。基本上,價值觀正在轉向。TextView的值左右切換

例如 - 如果我將芝加哥設爲我的城市,它會顯示芝加哥的溫度應該在哪裏。

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

你在哪裏創建'DrawerListItem'? –

+0

在我的主要活動。我將DrawerListItem添加到ArrayList中,然後將ArrayList賦予Adapter。適配器然後設置值 – user2300851

+0

這是我學會了如何使它:http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/ – user2300851

回答

0

問題的原因是您創建DrawerListItem實例。

以iconiconshire爲例。您調用構造函數,像這樣:

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°")

+0

嗯,我試圖切換代碼,讓它起作用。這是將值設置爲正確的textViews的代碼。如果我把它們按順序排列,他們可以切換到 – user2300851

+0

'drawerItems.add(new DrawerListItem(R.drawable.cloudy,「Vernon Hills」, \t \t \t \t「9:51 PM」,「54°」)); ' – user2300851

+0

這就是它的樣子 – user2300851