【发布时间】:2015-12-24 01:51:05
【问题描述】:
我有带有默认文本的微调器。默认文本在用于显示微调器项目的数组中不可用。为此,我正在使用自定义数组适配器。
例如,我显示的默认文本是 14:13,但在我的数组中,文本是 14:15。我想为这个项目做 setSelection (14:15)。我能为此做些什么?
public class CustomSpinnerAdapter extends ArrayAdapter<String>{
Context context;
String[] objects;
String firstElement;
boolean isFirstTime;
public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, String defaultText) {
super(context, textViewResourceId, objects);
this.context = context;
this.objects = objects;
this.isFirstTime = true;
setDefaultText(defaultText);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if(isFirstTime) {
objects[0] = firstElement;
isFirstTime = false;
}
// ((TextView) convertView).setGravity(Gravity.CENTER_VERTICAL);
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
notifyDataSetChanged();
return getCustomView(position, convertView, parent);
}
public void setDefaultText(String defaultText) {
this.firstElement = objects[0];
objects[0] = defaultText;
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.time_item, parent, false);
TextView label = (TextView) row.findViewById(R.id.txt_time);
label.setText(objects[position]);
return row;
}
}
下图说明了确切的要求。如果您可以在我们开始活动时首先观察到,微调器显示默认文本“10:39”,但在微调器数组列表中,我们的值是 10:37 和 10:50。所以我想将其显示为附近的值。
现在我正在显示默认值,当我们点击它时,微调器值会正常工作。但我想要的是当我点击微调器时它会自动滚动到 10:37 并显示它将被选中。
【问题讨论】:
-
当我将arraylist中可用的变量位置提供给适配器类时,我得到了它。对于用于setSelection(位置)的选择。
标签: android user-interface spinner adapter