dropsOfJupiter
dropsOfJupiter

Reputation: 6823

Android - setSelected in OnItemClick in ListView

I am trying to set item selected in OnItemClick event in ListView and it just wouldn't leave item selected. What am I doing wrong?

lView.setOnItemClickListener(new OnItemClickListener()
   {
    @Override
    public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View clickedview, int position, long id)
    {
     clickedview.setSelected(true); 
        mItemsAdapter.select(position);
    }
   }); 

few things:
1. I am trying to implement Multiple Select on the list View.
2. I cannot extend from ListActivity because Activity extends from BaseActivity custom class already.
3. mItemsAdapter is a custom ItemsAdapter adapter that extends BaseAdapter.
4. I don't need a checkbox in there, just to be able to see the row selected is fine.
5. ItemsAdapter overrides getView() and sets the layout of the row by inflating xml

Upvotes: 3

Views: 16324

Answers (3)

Leandro
Leandro

Reputation: 63

I could manage to get an item of a ListView to be set as selected when long-clicked:

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
        int position, long id) {
    parent.requestFocusFromTouch(); // IMPORTANT!
    parent.setSelection(position);
    return true;
}

It only worked after I called requestFocusFromTouch().

Upvotes: 5

Beasly
Beasly

Reputation: 1537

I currently don't have much time. So I'll take a look again later this day. Anyway take a look at my previous questions, I was struggling with the same:

In case the solution for you is not in there (I think it's in the first one) we will need more code, in order to help you.

Hope this helps a bit.

Upvotes: 0

sgarman
sgarman

Reputation: 6182

I have not had much luck using the built in functionality for selection.

I see you have your own custom adapter, which I am guessing means your inflating custom views as rows. If your row has anything more then a checkedtextview I don't think you will be able to correctly use setSelections.

I solved this problem by using my own models and functions. Each item in the list had data with it to determine it if was selected or not. I could then iterate though that array, toggle selections with and and even update the UI by changing values and calling notifydatasetchanged on the adapter (which used getView and checked against my selection model to draw checks).

Upvotes: 0

Related Questions