Select Spinner 中的一个选项,结果为 SELECT?
Select One Option inside Spinner with results of a SELECT?
我正在寻找一种在 Spinner 中插入文本“-Select 一个选项-”的方法。我在 sqlite 中有一个 select return 一些结果,我确实在微调器上显示了这些结果。
如何在结果中显示“-Select 一个选项-”?
旋转器
Spinner spin = (Spinner)findViewById(R.id.mySpinner);
ConsultaClienteVendaProdutoListAdapter adapter = new ConsultaClienteVendaProdutoListAdapter(this, lista);
spin.setAdapter(adapter);
适配器
public class ConsultaClienteVendaProdutoListAdapter extends BaseAdapter{
private List<Cliente> list;
private Context context;
public ConsultaClienteVendaProdutoListAdapter(List<Cliente> list, Context context) {
this.list = list;
this.context = context;
}
public void changeList(List<Cliente> list){
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
Cliente cliente = list.get(position);
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.consulta_cliente_venda_produto_adapter, parent, false);
viewHolder.llClienteAdapter = (LinearLayout) convertView.findViewById(R.id.llClienteAdapter);
viewHolder.tvNome = (TextView) convertView.findViewById(R.id.tvNome);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.tvNome.setText(cliente.getNome());
return convertView;
}
/** pattern view holder */
private static class ViewHolder{
LinearLayout llClienteAdapter;
TextView tvNome;
}
}
在您的列表中,将第一个位置设置为 "Select one position"。
示例:
list.get(0).setClientName("select one position");
在你的代码中你有 List<Cliente>
,你可以只添加一个项目 "Select one position" 到该列表的开头,并将列表增加一个以适应它。
或者,更好的方法:
...
@Override
public int getCount() {
return list.size() + 1;
}
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
Cliente cliente;
if (position != 0) { //Java counts from zero
cliente = list.get(position - 1);
}
...
if (position == 0) {
viewHolder.tvNome.setText("-Select one option-");
} else {
viewHolder.tvNome.setText(cliente.getNome());
}
return convertView;
}
应该工作,可能需要修改才能正常工作,但这是一般的想法。
我正在寻找一种在 Spinner 中插入文本“-Select 一个选项-”的方法。我在 sqlite 中有一个 select return 一些结果,我确实在微调器上显示了这些结果。
如何在结果中显示“-Select 一个选项-”?
旋转器
Spinner spin = (Spinner)findViewById(R.id.mySpinner);
ConsultaClienteVendaProdutoListAdapter adapter = new ConsultaClienteVendaProdutoListAdapter(this, lista);
spin.setAdapter(adapter);
适配器
public class ConsultaClienteVendaProdutoListAdapter extends BaseAdapter{
private List<Cliente> list;
private Context context;
public ConsultaClienteVendaProdutoListAdapter(List<Cliente> list, Context context) {
this.list = list;
this.context = context;
}
public void changeList(List<Cliente> list){
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
Cliente cliente = list.get(position);
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.consulta_cliente_venda_produto_adapter, parent, false);
viewHolder.llClienteAdapter = (LinearLayout) convertView.findViewById(R.id.llClienteAdapter);
viewHolder.tvNome = (TextView) convertView.findViewById(R.id.tvNome);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.tvNome.setText(cliente.getNome());
return convertView;
}
/** pattern view holder */
private static class ViewHolder{
LinearLayout llClienteAdapter;
TextView tvNome;
}
}
在您的列表中,将第一个位置设置为 "Select one position"。
示例:
list.get(0).setClientName("select one position");
在你的代码中你有 List<Cliente>
,你可以只添加一个项目 "Select one position" 到该列表的开头,并将列表增加一个以适应它。
或者,更好的方法:
...
@Override
public int getCount() {
return list.size() + 1;
}
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
Cliente cliente;
if (position != 0) { //Java counts from zero
cliente = list.get(position - 1);
}
...
if (position == 0) {
viewHolder.tvNome.setText("-Select one option-");
} else {
viewHolder.tvNome.setText(cliente.getNome());
}
return convertView;
}
应该工作,可能需要修改才能正常工作,但这是一般的想法。