67

SpinnerAdapter を実装すると getDropDownView が得られますgetViewが、拡張する必要がある場合とどう違うのでしょうかBaseAdapter

4

4 に答える 4

58

次のコードを見ると、getView と getDropDownView に名前と値の配列があります。

private void initView() {
    SpinnerDropDownAdapter sddadapter = new SpinnerDropDownAdapter(this);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, sddadapter.name);

    Spinner getViewSP = (Spinner) findViewById(R.id.getview_sp);
    getViewSP.setAdapter(adapter);

    Spinner getViewWDropDownSP = (Spinner) findViewById(R.id.getview_w_drop_down_sp);
    getViewWDropDownSP.setAdapter(sddadapter);
}

static class SpinnerDropDownAdapter extends BaseAdapter implements
        SpinnerAdapter {
    Context context;

    SpinnerDropDownAdapter(Context ctx) {
        context = ctx;
    }

    String[] name = { " One", " Two", " Three", " Four", " Five", " Six",
            " Seven", " Eight" };
    String[] value = { " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8" };

    @Override
    public int getCount() {
        return name.length;
    }

    @Override
    public String getItem(int pos) {
        // TODO Auto-generated method stub
        return name[pos];
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setText(name[position]);
        return text;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        TextView text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setText(value[position]);
        return text;
    }
}

getDropDownView メソッドが実装されていない場合、ドロップダウン ポップアップは getView からビューを取得します。したがって、名前のみが表示されます。

getView

getView と getDropDownView の両方が実装されている場合、前者はnameを取得し、後者はvalueを取得します。静止しているスピナーは getview から name を取得、ドロップダウン ポップアップはvalueを取得します。 getView と getDropDownView

于 2012-11-17T19:13:00.560 に答える
6

SpinnerAdapter を次のように使用できます。

public class FolderSpinnerAdpater extends BaseAdapter implements SpinnerAdapter {
@Override
public int getCount() {
    return 0;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return null;
}
}

BaseAdapter.java 内

public View getDropDownView(int position, View convertView, ViewGroup parent) {
    return getView(position, convertView, parent);
}

オーバーライドgetView()してgetDropDownView()、別のビューを返すと、違いがわかります。

ここに画像の説明を入力

于 2017-03-02T09:32:31.077 に答える