SpinnerAdapter を実装すると getDropDownView が得られますgetView
が、拡張する必要がある場合とどう違うのでしょうかBaseAdapter
。
質問する
33095 次
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 と getDropDownView の両方が実装されている場合、前者はnameを取得し、後者はvalueを取得します。静止しているスピナーは getview から name を取得し、ドロップダウン ポップアップはvalueを取得します。
于 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 に答える