单击微调器

时间:2017-07-06 14:44:38

标签: android spinner

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但是它没有这样做?

1 个答案:

答案 0 :(得分:0)

longClickListener类上设置Spinner,您将该视图转换为侦听器内的TextView。这就是应用程序崩溃的原因。

Spinner.setOnLongClickListener不是每个适配器项的侦听器。

您要找的是Spinner.setOnItemSelectedListener(new OnItemSelectedListener())