我创建了一个微调器并使用自定义适配器设置数据。在那种情况下,如果我点击微调器,我会从底部开始下拉。我需要从顶部开始下拉。
我收到此问题,如图片
所示
如图所示,当我第一次点击微调器时,数据从底部开始。
我需要从顶部获取数据。
我的代码:
微调器和适配器设置
listCtcLakhs = new ArrayList<String>();
listCtcLakhs.add("25");
listCtcLakhs.add("30");
listCtcLakhs.add("35");
listCtcLakhs.add("40");
listCtcLakhs.add("45");
listCtcLakhs.add("50");
listCtcLakhs.add("60");
listCtcLakhs.add("70");
listCtcLakhs.add("80");
listCtcLakhs.add("90");
listCtcLakhs.add("100");
listCtcLakhs.add("110");
listCtcLakhs.add("120");
listCtcLakhs.add("150");
listCtcLakhs.add("Lacs");
spForCtcLakhs
.setAdapter(new SpinnerAdapter(getActivity(), listCtcLakhs));
spForCtcLakhs.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
view.findViewById(R.id.iconDropDown)
.setVisibility(View.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spForCtcLakhs.setSelection(listCtcLakhs.size() - 1);
适配器代码
public class SpinnerAdapter extends BaseAdapter {
Context mContext;
ArrayList<String> dropDownList;
public SpinnerAdapter(Context context, ArrayList<String> studentList) {
this.mContext = context;
this.dropDownList = studentList;
}
@Override
public int getCount() {
if(dropDownList.size()>1){
return dropDownList.size()-1;
}
return dropDownList.size();
}
@Override
public Object getItem(int arg0) {
return dropDownList.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
private class ViewHolder {
TextView txtMenu;
ImageView ivDropDown;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder = null;
if (view == null) {
LayoutInflater layoutInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
holder = new ViewHolder();
view = layoutInflater.inflate(R.layout.highest_qulifi_layout,
parent, false);
holder.txtMenu = (TextView) view
.findViewById(R.id.highest_quilification_textview);
holder.ivDropDown = (ImageView) view
.findViewById(R.id.iconDropDown);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
try {
String name = dropDownList.get(position);
// set hint
if (position == getCount()) {
holder.ivDropDown.setVisibility(View.VISIBLE);
holder.txtMenu.setText(name);
}
// Set data
else {
holder.txtMenu.setText(name);
}
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
return view;
}
}
我尝试了很多方法,但我无法在列表顶部设置提示(在列表提示位于底部,我使用setSelection()
设置)。因此,它不会成为最重要的。
如果有人有任何其他办法可以帮助我,请帮助我。
答案 0 :(得分:0)
默认情况下,下拉列表开始显示所选项目中的下一项。我相信你需要创建一个CustomSpinner类来覆盖Spinner类中确定下拉列表显示内容的方法。另一个答案here包含一个非常明确的可能实现示例。