方法“onItemSelected”在数组适配器和片段中都不起作用 [英] method "onItemSelected" doesn't work in array adapter and also in fragment

查看:116
本文介绍了方法“onItemSelected”在数组适配器和片段中都不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

方法 onItemSelected 不起作用,我不知道原因。

The method onItemSelected doesn't work and I don't know why.

以下是我的代码。

数组适配器:

public  class MyListAdapter extends ArrayAdapter {
    Spinner spinner;
    ListView listView;

    /*public MyListAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }*/

    public MyListAdapter(Context context) {
        super(context, R.layout.single_listview_item);
    }




    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;

         spinner = (Spinner) convertView.findViewById(R.id.simpleSpinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                getContext(),
                R.array.country_arrays,
                android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        System.out.println("ciao1");

      //  spinner.setOnItemSelectedListener(this);

        return row;
    }



   /* @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String selState = (String) spinner.getSelectedItem();
        System.out.println(selState);
        Toast.makeText(
                getContext(),
                "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }*/

    }

片段:

 ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list2, container, false);
        listView = (ListView) rootView.findViewById(R.id.listview);
        ListAdapter listAdapter = new MyListAdapter(getContext());
        listView.setAdapter(listAdapter);
//      listView.setOnItemClickListener(this);
        listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long i)
            {
                listView.setSelection(position);
                String selState = (String) listView.getSelectedItem();
                Toast.makeText(
                        getContext(),
                        "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });


推荐答案

在ListViews上使用onItemClicked。 OnItemSelected适用于Spinners。这是Android的滋扰之一......

On ListViews you use onItemClicked. OnItemSelected is for Spinners. It's one of those Android nuisances...

这篇关于方法“onItemSelected”在数组适配器和片段中都不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆