-2

を作成しmain.xmllist.xml Java クラスを拡張しmenuActivity ます。2 つのベクトルがあります。

 Vector<String> name=new Vector<String>();
   Vector<String> nickname=new Vector<String>();

私も作成しましたcustom holder class。私の質問は、この 2 つのリストをアダプター クラスに渡す方法です。どのアダプタを使用すればよいですか?

この 2 つのベクトルを別のリストに入れ、そのリストをカスタム アダプター クラスに送信しようとしましたが、うまくいきませんでした。私はここで立ち往生しています。ベースアダプターとアレイアダプターの違いは何ですか?

4

1 に答える 1

1

BaseAdpater が行うことは、AbsListView に必要なコールバックを固めることだけです。ArrayAdater は、項目のリストを TextView に自動拡張する、より包括的なアダプターです。

あなたの状況では、BaseAdapter を拡張することをお勧めします。

class MyAdapter extends BaseAdapter {
    Vector<String> names;
    Vector<String> nicks;

    public MyAdapter(Vector<String> nms, Vector<String> nks) {
        if (nms.size() != nks.size())
            throw new RuntimeException("oops! Wrong sizes for vectors");
        name = nms;
        nicks = nks;
    }

    @Override
    public int getCount() {
        return names.getSize() &&  nicks.getSize();
    }

    @Override
    public String getItem() {
        // Can't really implement with two vectors.
        return null;
    }

    @Override
    public getView(int pos, View convert, ViewGroup mommy) {
        LinearLayout ll = (LinearLayout)convert;

        if (ll == null)
            // Inflate the linear layout - preferrably from resources

        ViewHolder vh = (ViewHolder)ll.getTag();

        if (vh == null)
            // Inflate ViewHolder

        vh.tvname.setText(names.get(pos));
        vh.tvnick.setText(nicks.get(pos));
        return ll;
    }

    class ViewHolder {
        TextView tvname, tvnick;
    }
}
于 2012-11-30T21:16:24.400 に答える