0

このチュートリアルに基づいて、独自のListViewを構築しています。

この行: MessageDetails msg = _data.get(position); 彼のコードで私に問題を与えています。この行で明らかにタイプエラーが発生しています。彼のコードがこのようにどのように機能していたのかわかりません。彼のように機能させるために、私は別の方法で何をすべきか。

編集

この行の問題は、2つの異なるタイプを組み合わせようとしていることMessageDetailsですArrayList<String>。彼のチュートリアルは、私がエラーを受け取っているので、私に良い方法を与えてくれませんが、彼は明らかにそうではありませんでした。

私のアダプタークラス

public class MenuItemAdapter extends BaseAdapter {
    private ArrayList<String> _data;
    Context _c;

    MenuItemAdapter(ArrayList<String> data, Context c){
        _data = data;
        _c = c;
    }
    public int getCount() {
        return _data.size();
    }
    public Object getItem(int position) {
        return _data.get(position);
    }
    public long getItemId(int position) {
        return position;
    }
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
           LayoutInflater vi = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
           v = vi.inflate(R.layout.menuitemrow, null);
        }
        ImageView image = (ImageView) v.findViewById(R.id.MIR_itemImage);
        TextView itemName = (TextView)v.findViewById(R.id.MIR_itemImage);
        TextView itemDescription = (TextView)v.findViewById(R.id.MIR_itemDescription);
        TextView itemPrice = (TextView)v.findViewById(R.id.MIR_itemPrice);
        TextView itemOther = (TextView)v.findViewById(R.id.MIR_itemOther);

        // Create instance of MenuItemDetail and then assign
        MenuItemDetail mid = _data.get(position);
        image.setImageResource(mid.icon);
        itemName.setText(mid.itemName);
        itemDescription.setText(mid.itemDescription);
        itemPrice.setText(mid.itemPrice);
        itemOther.setText(mid.itemOther);
        return v;
    }

}

これは私のMenuItemDetailクラスで、代わりに私のフィールドを使用した彼と非常によく似ています。

public class MenuItemDetail {

    int icon;
    String itemName;
    String itemDescription;
    String itemPrice;
    String itemOther;



    public int getIcon() {
        return icon;
    }
    public void setIcon(int icon) {
        this.icon = icon;
    }
    public String getItemName() {
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    public String getItemDescription() {
        return itemDescription;
    }
    public void setItemDescription(String itemDescription) {
        this.itemDescription = itemDescription;
    }
    public String getItemPrice() {
        return itemPrice;
    }
    public void setItemPrice(String itemPrice) {
        this.itemPrice = itemPrice;
    }
    public String getItemOther() {
        return itemOther;
    }
    public void setItemOther(String itemOther) {
        this.itemOther = itemOther;
    }


}

どんな助けと説明もいただければ幸いです。

また、必要に応じて問題を修正するArrayList必要がありましたArrayList<String>。その変更がどこで失敗したのかわからない。

4

2 に答える 2

2

_data文字列のリスト ( ) として宣言しましたArrayList<String>。おそらく、MenuItemDetails のリストを使用するつもりでしたか? String を MenuItemDetail オブジェクトに変換できないためです。これらのクラスは無関係です。

private ArrayList<MenuItemDetail> _data;
Context _c;

MenuItemAdapter(ArrayList<MenuItemDetail> data, Context c){
    _data = data;
    _c = c;
}
于 2013-02-23T21:45:03.703 に答える
0

例のコードに問題がありました。これはできません。回避策は、ArrayList<YourType>使用しているタイプの を渡すようにすることです。ArrayLists<String>ただし、これはバンドル内のエクストラとしてのみ渡すことができるため、バンドルを介して渡そうとすると問題が発生します。したがって、私の解決策は、コンバーター メソッドを作成してオブジェクトを に変換し、ArrayyList<String>別のコンストラクター メソッドを作成して からその型を作成することでしたArrayList<String>ArrayList<String>次に、からへの変換でエラーをキャッチするために例外クラスを作成する必要がありますArrayList<YourType>

私はこのルートを避けようとしていましたが、それが唯一の実行可能な解決策です。

于 2013-02-24T16:31:15.583 に答える