public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner s = new Spinner(this);
RelativeLayout rl = (RelativeLayout)
findViewById(R.id.activity_main);
String ss[] = {"--Select Item--", "Item1", "Item2", "Item3",
"Item4", "Item5"};
ArrayAdapter<String> ad = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, ss);
s.setAdapter(ad);
rl.addView(s);
s.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
TextView t = (TextView) v;
Toast.makeText(MainActivity.this, t.getText().toString(),
Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
当我长时间按下旋转器中的某个项目时,我没有得到任何Toast应该来,因为代码指定它如此。此外,当长按精简器本身(而不是微调器中下拉列表中的项目)时,应用程序崩溃。为什么会这样?
编辑1:
s.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
TextView t = (TextView) view;
Toast.makeText(MainActivity.this, t.getText().toString(), Toast.LENGTH_SHORT).show();
return true;
}
});
当使用setOnItemLongClickListener而不是setOnLongClickListener时,如果长按下微调器的下拉列表中的项目应该生成一个toast但是它没有这样做?
答案 0 :(得分:0)
在longClickListener
类上设置Spinner
,您将该视图转换为侦听器内的TextView
。这就是应用程序崩溃的原因。
Spinner.setOnLongClickListener
不是每个适配器项的侦听器。
您要找的是Spinner.setOnItemSelectedListener(new OnItemSelectedListener())