开发者

Android listview highlight issue

I have to do a listing for items. Here is my XML for layout:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_horizontal"
        android:background="#FFFFFF"
        android:stretchColumns="0">
        <TableRow 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:id="@+id/listbox">
            <LinearLayout
                android:layout_width="fill_parent"
                android:background="#FFFFFF"
                android:layout_gravity="center_horizontal"
                android:layout_height="fill_parent">
                    <ListView
                        android:id="@+id/android:list"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent">
                    </ListView>
                    <LinearLayout
                        android:id="@android:id/empty" 
                        android:layout_width="fill_parent"
                        android:background="#FFFFFF"
                        android:layout_gravity="center"
                        android:layout_height="fill_parent">
                        <TextView 
                            android:id="@+id/emptytext" 
                            android:paddingTop="100dp"  
                            android:layout_width="fill_parent"
                            android:layout_height="fill_parent"
                            android:textColor="#818185"
                            android:textSize="25sp"
                            android:textStyle="bold"
                            android:background="#FFFFFF"
                            android:text="@string/empty_fav"
                            android:gravity="center_horizontal|center_vertical"
                            android:paddingLeft="6dip"
                        />
                    </LinearLayout>  
            </LinearLayout>         
        </TableRow>
</TableLayout>

It is the xml for R.layout.custom_list_item_1.

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:textSize="18sp"
    android:textStyle="bold"
    android:background="#FFFFFF"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

And here is my code.

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.fav_layout);
        ....
        ........

        wordDataHelper = new WordDataHelper(getApplicationContext());
        favCursor  = wordDataHelper.getCursorFav();
        startManagingCursor(favCursor);

        favAdapter = new SimpleCursorAdapter(
                this, 
                R.layout.custom_list_item_1,
                favCursor,                                              
                new String[] {WordDataHelper.ENGWORD},           
                new int[] {android.R.id.text1});   

        setListAdapter(favAdapter);

        list = getListView();

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
  开发者_C百科              // TODO Auto-generated method stub

                showVideo(((TextView) view).getText());

            }});

        list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
            // @Override
            public void onCreateContextMenu(ContextMenu menu, View v,
                    ContextMenu.ContextMenuInfo menuInfo) {
                menu.setHeaderTitle("Context Menu");
                menu.add(0, CONTEXT_DELETE, 1, "Delete Item");
            }
        });

        list.setTextFilterEnabled(true);

        list.setClickable(true);
}

Now everything is showing fine and all other functionality is also working fine. But if I am touching the any row, it is not highlighting i.e. the color is not changing. Is there any problem in my code or does it have to be implement separately? If so, how?


You probably need to set the

android:listSelector

attribute of the ListView.

Check this answer Android ListView Selector Color, it's well explained.

If that didn't work out (I haven't tried it), try setting a color selector as the background of the TextView defined in R.layout.custom_list_item_1


The problem is that you're overwriting the default background drawable to a plain color, which doesn't support states (clicked, focused, etc). If you want the background to be white, it might be better to just use one of the "light" Android themes, e.g. @android:style/Theme.Light.NoTitleBar.


Try to remove the background color of your TextView item:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:textSize="18sp"
    android:textStyle="bold"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜