Android 当选定项为&x27;暗示
我有一个定制的微调器 @凌驾 public void setOnItemSelectedListener(最终OnItemSelectedListener侦听器){Android 当选定项为&x27;暗示,android,spinner,onitemclicklistener,Android,Spinner,Onitemclicklistener,我有一个定制的微调器 @凌驾 public void setOnItemSelectedListener(最终OnItemSelectedListener侦听器){ final-OnItemSelectedListener-OnItemSelectedListener=new-OnItemSelectedListener(){ @凌驾 已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){ if(提示!=null | | floatingLabelText!=null){
final-OnItemSelectedListener-OnItemSelectedListener=new-OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
if(提示!=null | | floatingLabelText!=null){
如果(!floatingLabelVisible&&position!=0){
showFloatingLabel();
}else if(floatingLabelVisible&&position==0){
hideFloatingLabel();
}
}
if(位置!=lastPosition&&error!=null){
设置错误(空);
}
最后位置=位置;
if(侦听器!=null){
位置=提示!=空?位置-1:位置;
listener.onItemSelected(父级、视图、位置、id);
}
}
@凌驾
未选择公共无效(AdapterView父级){
if(侦听器!=null){
listener.onNothingSelected(父级);
}
}
};
super.setOnItemSelectedListener(onItemSelectedListener);
}
当选定项为其提示时,不调用微调器“已选定”。
因此,当用户选择微调器提示时,未选择的微调器不被调用
那么如何在微调器中处理提示选择呢?sp.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
Toast.makeText(getActivity(), "its your hint ", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "do here what you want ", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
如果(位置==0){
Toast.makeText(getActivity(),“这是你的提示”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(getActivity(),“在这里做你想做的”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
试试这个
Spinner spinner_subcate = (Spinner) findViewById(R.id.subcat_spin);
ArrayAdapter dataAdapter1=新的ArrayAdapter(MainActivity.this,R.layout.spinner\u项){
@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=super.getView(位置、转换视图、父级);
if(position==getCount()){
((TextView)v.findViewById(android.R.id.text1)).setText(“”);
((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount());/“要显示的提示”
}
返回v;
}
@凌驾
public int getCount(){
return super.getCount()-1;//不显示最后一项。它用作提示。
}
};
dataAdapter1.setDropDownViewResource(R.layout.spinner\u下拉菜单项);
数据适配器1.添加(“列表项1”);
数据适配器1.添加(“列表项2”);
数据适配器1.添加(“列表项3”);
数据适配器1.添加(“提示”);
//微调器单击侦听器
微调器_subcate.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
String sub_cat=parent.getItemAtPosition(位置).toString();
Log.d(“子类::”,子类);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
//将数据适配器连接到微调器
微调器_subcate.setAdapter(数据适配器1);
微调器_subcate.setSelection(dataAdapter1.getCount())//将提示设置为默认选择,使其在启动时显示。
您可以手动检查位置,也可以添加代码以提高效率explanation@Chetna不幸的是,在选择提示时,onItemSelected未调用,并且我无法获取位置。请添加您的codecan您设置的item Selected Listener或Nother sp是您的微调器对象
Spinner spinner_subcate = (Spinner) findViewById(R.id.subcat_spin);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if (position == getCount()) {
((TextView)v.findViewById(android.R.id.text1)).setText("");
((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount())); //"Hint to be displayed"
}
return v;
}
@Override
public int getCount() {
return super.getCount()-1; // you dont display last item. It is used as hint.
}
};
dataAdapter1.setDropDownViewResource(R.layout.spinner_dropdown_item);
dataAdapter1.add("list item1");
dataAdapter1.add("list item2");
dataAdapter1.add("list item3");
dataAdapter1.add("hint");
// Spinner click listener
spinner_subcate.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String sub_cat = parent.getItemAtPosition(position).toString();
Log.d("sub cat::",sub_cat);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// attaching data adapter to spinner
spinner_subcate.setAdapter(dataAdapter1);
spinner_subcate.setSelection(dataAdapter1.getCount()); //set the hint the default selection so it appears on launch.