我有微调器,默认文本。数组中没有默认文本,用于显示微调器项。为此我正在使用自定义数组适配器。
例如我显示默认文本是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”,但在旋转器arraylist中我们的值为10:37和10:50。所以我想把它显示为附近的值。
现在我显示默认值,当我们点击它弹出时,微调器值完美运行。但我想要的是当我点击微调器时它会自动滚动到10:37并显示它将被选中。
答案 0 :(得分:1)
您可以将此代码用于微调器适配器。
Spinner spinner = (Spinner) findViewById(R.id.your_spinner);
ArrayAdapter adapter = new ArrayAdapter(YourActivity.this, R.layout.spinner_item, array_spinner);
//array_spinner is your array to displayed on spinner selection
spinner.setAdapter(adapter);
spinner.setPrompt("Choosed item");
spinner.setSelection(int position); //position of item in your array_spinner
我希望这会有所帮助。