기본 텍스트가있는 회 전자가 있습니다. 표시 텍스트 상자에 사용하는 배열에서는 기본 텍스트를 사용할 수 없습니다. 이를 위해 맞춤 어레이 어댑터를 사용하고 있습니다.Android에서 회 전자의 항목 선택
예를 들어 기본 텍스트가 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으로 스크롤하는 스피너를 탭하면 선택한 항목이 표시됩니다.
arraylist에서 사용할 수있는 가변 위치를 어댑터 클래스에 제공하면 작동합니다. setSelection (위치)에 사용되는 선택 항목입니다. – malli