我已经尝试了几种方法来实现这一点,我遵循了这一点 - > Android Spinner databind using array list回答,但我的对象里面有一个ArrayList。 整个事情是一个ArrayList,其中Object有自己的列表。
如何正确显示此信息?这个类中的另一个领域是我不想选择的东西,只是内部的arraylist。类定义将使一切清晰:
public class Horario{
private String fecha;
private ArrayList<String> hora;
public Horario(String _fecha, ArrayList<String> _hora){
fecha=_fecha;
hora = _hora;
}
public Horario(){}
public void setFecha(String _fecha){
fecha = _fecha;
}
public void setHora(ArrayList<String> _hora){
hora=_hora;
}
public String getFecha(){
return fecha;
}
public ArrayList<String> getHora(){
return hora;
}
}
这是一个日程表的类,日期(fecha)是我不想选择的,小时(hora)是。我想这是一个带有类别(日期)和一组可点击项目(小时)的下拉菜单。
Date1
hour 1
hour 2
hour 3
Date2
hour 1
如果这很困难/不可能,那么我想在每个旋转器选项中列出日期+小时。
Date1 - hour 1
Date1 - hour 2
Date1 - hour 3 ....
我怎样才能做到这一点?我如何个性化适配器才能实现这一目标?提前谢谢!
答案 0 :(得分:1)
修改强>
我道歉,我想我明白你现在的想法。我认为你想要的是getDropDown视图中的所有内容。我还没有完全测试过这个,但你可以尝试使用不同的布局来获取DropDownView,具体取决于你想为它指定一个标记。踢球者是这个自定义布局有一个显示没有区别的选择器xml。
public class HorarioArrayAdapter extends ArrayAdapter {
private Horario horario;
public HorarioArrayAdapter(Context context, int textViewResourceId, Horario horario) {
super(context, textViewResourceId);
this.horario = horario;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO whatever you had in mind
return super.getView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v;
if (// marker at this position says something) {
LayoutInflater viewInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = viewInflater.inflate(R.layout.custom_spinner_row, parent, false);
TextView text = (TextView) v.findViewById(R.id.txt_date);
text.setText(horario.getHora().get(position));
} else {
View v = super.getDropDownView(position, convertView, parent);
TextView text = (TextView) v.findViewById(android.R.id.text1);
text.setText(horario.getHora().get(position));
}
return v;
}
}
但是,如果这些位置被点击,那么微调器就不会做任何事情,因为甚至没有关闭。您可能需要为int position
数组创建一个自定义微调器,以告诉它何时关闭或不关闭。我必须说它似乎真的只是做一个显示器,你可能想考虑妥协,如果你不认为这是值得的。