Reputation: 470
I have a ListView, when I check for a row click "isSelected()" always returns false even if it's been previously selected, the second time I check it returns true.. The ListView needs to be clicked twice in order for "isSelected()" to work... I've seen similar issues on SO but none of the proposed solutions work..
Note: I'm using a custom ListAdapter, that where I am listening for the row click, so I cant use setOnItemClickListener on the Listview
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
v.clearFocus();
if (v.isSelected())
{
As suggested I added a setOnItemClickListener to the Listview, but now it doesn't detect if selected, it always returns 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);
}
}
});
Upvotes: 1
Views: 336
Reputation: 1555
Set listView.onItemClicklistener
instead of row.setOnClickListener
like this:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
}
});
Upvotes: 1