我想根据spinner的值选择显示消息。 所以我使用了以下代码。
sp=(Spinner)findViewById(R.id.spinner1);
String ar[]={"hello","abc"};
ArrayAdapter<String> adapt=new ArrayAdapter<String>(SpinnerEampleActivity.this, android.R.layout.simple_spinner_dropdown_item,ar);
sp.setAdapter(adapt);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3)
{
if(arg2==0)
{
AlertDialog.Builder alert=new AlertDialog.Builder(SpinnerEampleActivity.this);
alert.setMessage("hello");
alert.show();
}
else
{
AlertDialog.Builder alert=new AlertDialog.Builder(SpinnerEampleActivity.this);
alert.setMessage("abc");
alert.show();
}
}
但如果我从微调器中选择已经选择的值,我没有收到任何消息。 可以帮助我解决问题。 提前谢谢。
答案 0 :(得分:0)
当您再次单击当前选定的项目时,它无法触发任何事件。所以你无法捕捉setOnItemSelectedListener
微调器来响应。
您需要创建自定义微调器适配器来处理已选择项目的点击。
答案 1 :(得分:0)
我尝试了以下方法来获取自定义微调器
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, selects)
{
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null)
{
Context mContext = this.getContext();
LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.spinner_item, null);
}
final TextView tv=(TextView) v.findViewById(R.id.custopspin);
int pos=position;
if(pos==0)
{
tv.setText("hello");
// sy
}
else if(pos==1)
{
tv.setText("abc");
}
else
{
tv.setText("hi");
}
tv.setTextColor(Color.RED);
tv.setClickable(true);
tv.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
if(tv.getText().toString().equals("hello"))
{
}
else if(tv.getText().toString().equals("hi"))
{
}
else
{
}
}
});
return v;
}
};
timeslot.setAdapter(spinnerAdapter);
如上面评论中所述,选择该选项后并未隐藏。
答案 2 :(得分:0)
sp=(Spinner)findViewById(R.id.spinner1);
String ar[]={"hello","abc"};
ArrayAdapter<String> adapt=new ArrayAdapter<String>(SpinnerEampleActivity.this, android.R.layout.simple_spinner_dropdown_item,ar);
sp.setAdapter(adapt);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3)
{
AlertDialog.Builder alert=new AlertDialog.Builder(SpinnerEampleActivity.this);
alert.setMessage(ar[position]);
alert.show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这就是.........