2013-01-04 29 views
0

我想在列表視圖上顯示一些數據。我的問題是,我的列表視圖中只顯示一個項目。Android,ListView和ArrayAdaptater,getView只調用一次

我發現這裏有很多話題,但沒有人幫助我。

我已經看到getView()方法只被調用一次(我檢查了我的列表,它的大小是178)。

這裏是我的代碼:

public class RiverListArrayAdaptater extends ArrayAdapter<LinkedList<River>> { 

    private Context context; 
    private LinkedList<River> list; 

    public RiverListArrayAdaptater(Context context,LinkedList<River> list) { 
     super(context,R.layout.list_river); 
     this.context = context; 
     this.list = list; 
    } 

    public View getView(int pos, View convertView, ViewGroup parent) { 
     // Get variables 
     LayoutInflater inflater = (LayoutInflater) cont  ext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
     View rowView = inflater.inflate(R.layout.list_river, parent, false); 
     TextView textViewName = (TextView) rowView.findViewById(R.id.name); 
     TextView textViewValue = (TextView) rowView.findViewById(R.id.value); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); 
     textViewName.setText(list.get(pos).getName()); 
     textViewValue.setText(list.get(pos).getDebit()); 
     imageView.setImageResource(R.drawable.down); 

     return rowView; 
    } 

} 

我在OnCreate()代碼:

LinkedList<River> list = parser.parse(getter.getData()); 
      RiverListArrayAdaptater adaptater = new  RiverListArrayAdaptater(this,list); 
      adaptater.notifyDataSetChanged(); 
      adaptater.add(list); 
      list1.setAdapter(adaptater); 

在這裏,我的兩個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" 
    tools:context=".MainActivity" > 

    <ListView 
     android:id="@+id/listRiver" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     /> 

</RelativeLayout> 

和:

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

    <ImageView 
     android:id="@+id/logo" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="5dp" 
     android:contentDescription="@+id/up_or_down" 
     > 
    </ImageView> 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="20sp" > 
    </TextView> 

    <TextView 
     android:id="@+id/value" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="15sp" > 
    </TextView> 

</LinearLayout> 

Thx爲您的時間...

回答

2

您需要重寫ArrayAdapter中的getCount並返回列表中的項目數。

查看source for ArrayAdapter瞭解更多信息。

+0

哦,謝謝,它的工作! – user1949040

+0

你能告訴我它是如何工作的嗎?我的情況與你的相同@ user1949040 –

0

我從來沒有使用過ArrayAdapter但我認爲你應該從River,而不是LinkedList<River>

衍生
public class RiverListArrayAdaptater extends ArrayAdapter<LinkedList<River>> {...} 

應改爲:

public class RiverListArrayAdaptater extends ArrayAdapter<River> {...} 

名單被認爲是基本對象,你最後列出的是LinkedList而不是River的列表;因此,您只有ListView中的一件商品,因爲您只有一件LinkedList

相關問題