Skip to main content

Android: Selector isn"t working as expected in TableRow selection



I have a TAbleLayout in my XML with 1 row i.e. te headings row. Other all rows, I add dynamically. I want to make a row selected on clicking it & on touching it. I added clickListener to each row and am able to trap click event. But when the mouse is pressed or kept pressed, I see color change, then again it comes to normal color. I want the color to stay changed until I click other row or click somewhere else to deactivate the selected row.





My selector XML code :







<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Active state -->

<item android:state_selected="true" android:state_focused="false"

android:state_pressed="false" android:drawable="@android:color/transparent" />

<!-- Inactive state-->

<item android:state_selected="false" android:state_focused="false"

android:state_pressed="false" android:drawable="@android:color/transparent" />

<!-- Pressed state -->

<item android:state_pressed="true" android:drawable="@color/yellow" />



<!-- Selected state (using d-pad) -->

<item android:state_focused="true" android:state_selected="true"

android:state_pressed="false" android:drawable="@color/yellow" />







My Java code where I generate rows dynamically :







private void createView(TableRow tr, TextView tv, String data, int rowId) {

tv.setText(data);



tv.setTextColor(Color.WHITE);

tv.setPadding(20, 0, 0, 0);



tr.setPadding(0, 1, 0, 1);

//tr.setBackgroundColor(Color.TRANSPARENT);

tr.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tablerowselector));

tr.setId(rowId);

tr.setClickable(true);

tr.setFocusable(true); // Added thinking that if its not focusable then it can't be selected, but makes no difference

tr.setOnClickListener(this);

tr.addView(tv);

}







If I handle in clickListener event, and set Background color of row based on setting prevRowSelected and currRowSelected logic, that works. But how to make selector work and why it is not working ? Can't selector work the way am trying to achieve it ?





Thanks





Any help is appreciated.


Comments

  1. As I understand, you have to change the selector. I have found the recipes here

    ReplyDelete

Post a Comment

Popular posts from this blog

Wildcards in a hosts file

I want to setup my local development machine so that any requests for *.local are redirected to localhost . The idea is that as I develop multiple sites, I can just add vhosts to Apache called site1.local , site2.local etc, and have them all resolve to localhost , while Apache serves a different site accordingly.