2

I am using a custom adapter with a ListView and using a custom layout to supply the list itemviews. My layout is like this

> LinearLayout
    > TableView
        > TableRow
            > TextView
            > TextView

This results in list items that do not respond to clicks but if I edit the layout to the following it works

> LinearLayout
    > TextView
    > TextView

So I know that there is nothing wrong with my Adapter and Activity.

I have tried adding android:descendantFocusability="blocksDescendants" to the top level linear layout as suggested in this question ListView items not clickable with HorizontalScrollView inside

I have also tried adding android:clickable="true" and android:focusable="true" to the TableView but this does not work either.

Any ideas?


EDIT

layout XML source code

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
    <TableLayout  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:stretchColumns="1"
    >
        <TableRow 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:clickable="true"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:gravity="center_vertical">
            <TextView 
                android:id="@+id/ITEMVIEW_TEXT2_lblText" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp" 
                android:paddingRight="5dp"
                android:paddingLeft="15dp"
                />
            <TextView 
                android:id="@+id/ITEMVIEW_TEXT2_lblText2" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:textColor="#ff385487"
                android:gravity="right"
                android:paddingRight="15dp"
                />
        </TableRow>
    </TableLayout>
</LinearLayout>

EDIT

I have tried adding android:focusable="false" as suggested here and here but that does not work either.


EDIT

All I really wanted to achieve here was laying out two columns of text one aligned left and the other right. I figured out a better layout to achieve this that does not use TableView so my ListView items remain clickable, it also uses less views so it will also be more efficient, this is it

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
            <TextView 
                android:id="@+id/ITEMVIEW_TEXT2_lblText" 
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:textSize="20sp" 
                android:paddingRight="5dp"
                android:paddingLeft="15dp"
                />
            <TextView 
                android:id="@+id/ITEMVIEW_TEXT2_lblText2" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:textColor="#ff385487"
                android:gravity="right"
                android:paddingRight="15dp"
                />
</LinearLayout>

This is not a solution to the problem of TableView making ListView items non clickable but I have noted it here in case anyone else is looking to figure out how to do a similar layout.

Community
  • 1
  • 1
Martin Belcher - AtWrk
  • 4,579
  • 4
  • 33
  • 41

1 Answers1

0

I was stumbling over a similar issue using the combination of TableLayout and TableRow.

My solutions was the following: TableRow seems not to have its own Selector and because of this even if you define it as clickable and focusable, you will never see a visual difference. I assigned a background to the TableRow that is comparable to the one that is used by a GridView (can be found in the SDK under android-sdk-windows\platforms\android-10\data\res\drawable\grid_selector_background.xml).

Afterwards it was perfectly focusable and clickable.

Lars K.
  • 1,392
  • 2
  • 12
  • 17