Android:isSelected在ListView

时间:2016-09-19 15:49:50

标签: android listview

我有一个ListView,当我检查一行时,单击“isSelected()”总是返回false,即使它先前已被选中,第二次检查它返回true ..需要单击ListView两次才能进行“isSelected()”工作......我在SO上看到了类似的问题,但没有一个提出的解决方案有效..

注意:我正在使用自定义ListAdapter,我正在侦听行单击,因此我无法在Listview上使用setOnItemClickListener

row.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(final View v) {

            v.clearFocus();

            if (v.isSelected())
            {

正如我所建议的那样,我将一个setOnItemClickListener添加到Listview中,但是现在它没有检测到是否被选中,它总是返回false

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position,
                                long id) {

            Log.v("myApp", "onItemClick is " + position);

            if (v.isSelected())
            {
                v.setSelected(false);

                Log.v("MyApp", "fiend deselect row " + position);

                v.setBackgroundResource(R.color.default_color);

            } else {
                Log.v("MyApp", "fiend click row " + position);

                v.setSelected(true);

                v.setBackgroundResource(R.color.pressed_color);

            }

        }
    });

1 个答案:

答案 0 :(得分:1)

设置listView.onItemClicklistener而不是row.setOnClickListener 像这样:

listView.setOnItemClickListener(new OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> a, View v, int position,
                                    long id) {


                                }
                        });