2015-09-06 59 views
0

我不能做的ArrayList的ListView適配器,因爲
整個數據是從SQLite的ArrayList的<String>定義適配器

  final ArrayList<String> list= helper.GetAllValues("x1", column2); 
    //final StableArrayAdapter adapter = new StableArrayAdapter(this, android.R.layout.simple_list_item_1, list); 
    final ListAdapter adapter = new ListAdapter(this, list, img); 
    listview.setAdapter(adapter); 

ListAdapter.java

public class ListAdapter extends ArrayAdapter<String> { 

private final Activity context; 
private final String[] itemname; 
private final Integer[] imgid; 

public ListAdapter(Activity context, String[] itemname, Integer[] imgid) { 
    super(context, R.layout.items, itemname); 
    // TODO Auto-generated constructor stub 

    this.context=context; 
    this.itemname=itemname; 
    this.imgid=imgid; 
} 

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.items, null,true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.TitleLabel); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.SecondLabel); 

    txtTitle.setText(itemname[position]); 
    imageView.setImageResource(imgid[position]); 
    extratxt.setText("Description "+itemname[position]); 
    return rowView; 

}; 
} 

錯誤:(66 37 )錯誤:類ListAdapter中的構造函數ListAdapter不能應用於給定的類型;
需要:活動,字符串[],整數[]
發現:Listofmeals,ArrayList中,整數[]
原因:實際參數的ArrayList不能[]通過方法調用轉換被轉換成字符串

private final String[] itemname; 
private final Integer[] imgid; 

這是錯誤是這樣的:

txtTitle.setText(itemname[position]); 
imageView.setImageResource(imgid[position]); 
extratxt.setText("Description "+itemname[position]); 

如何類型Arraylist我必須插入?

+0

使用光標適配器。 – Raghunandan

+0

到ListAdapter.java? – test

+0

使用CursorAdapter代替ListAdapter – Raghunandan

回答

0

您在適配器中聲明的構造函數需要String[],但您傳遞的是ArrayList。更改您的適配器代碼以使用ArrayList,或使您的數據庫幫助程序返回String[]而不是ArrayList。這一點應該可以解決你的編譯錯誤。


在我看來,如果你封裝所有關於項目的信息在一個類中的代碼將是更清潔,並使用該類型的單個陣列(或清單)比字符串,圖像分離的數組/列表,像

public class MyItem { 
    String name; 
    int imageRes; 
} 

等東西然後你可以使用一個ArrayAdapter<MyItem>用數組或MyItem對象的列表。

如果名稱和圖像ID都存儲在你的SQLite表中,那麼你有另一種選擇:改用CursorAdapter。在這種情況下,您希望從數據庫中獲得Cursor並使用它,這意味着您在使用它之前不必將所有數據轉換爲數組或列表。