无法突出显示ListView中的选定行

时间:2014-01-29 09:49:35

标签: android android-listview

这个问题已被问过很多次了,我在阅读了大约20篇帖子并在我的代码中尝试各种解决方案之后发布了这个问题。

我使用了一个选择器,我还将ListView的选择模式定义为ListView.CHOICE_MODE_SINGLE。但没有任何作用。这是我的xml文件。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="3"
    tools:context=".MainActivity" >

<ListView
    android:id="@+id/listView"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@drawable/bg_key" />

<TextView
    android:id="@+id/textView"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="2" />

</LinearLayout>

以下是上述文件的java代码。

public class MainActivity extends Activity {

    ListView listView;
    TextView textView;

    String array[] = new String[] { "abc", "def", "ghi", "jkl",
            "mno", "pqr" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = (ListView) findViewById(R.id.listView);
        textView = (TextView) findViewById(R.id.textView);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getApplicationContext(),
                android.R.layout.simple_dropdown_item_1line, array);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View view,
                    int position, long arg3) {
                // TODO Auto-generated method stub
                view.setSelected(true);
                String clicked = array[position];
                textView.setText("You clicked " + clicked);

            }
        });

    }

这是存储在drawable文件夹中的bg_key.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/pressed_color" android:state_selected="true"/>
    <item android:drawable="@color/default_color"/>

</selector>

单击后,所选行仍不会保持突出显示。它会暂时突出显示,但随后会恢复原始颜色。

请帮忙。

由于

1 个答案:

答案 0 :(得分:2)

使用listselector怎么样?!

<listView
android:listSelector="@drawable/listview_selector"/>