2011-01-26 57 views
3

我想在ListView中設置在OnItemClick事件中選擇的項目,它只是不會離開項目選擇。我究竟做錯了什麼?Android - setSelected在OnItemClick在ListView

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

幾件事情:
1.我想實現多在列表視圖中選擇。
2.我無法從ListActivity擴展,因爲Activity已經從BaseActivity自定義類擴展。
3. mItemsAdapter是一個擴展BaseAdapter的自定義ItemsAdapter適配器。
4.我不需要在那裏有一個複選框,只是爲了能夠看到選中的行很好。
5. ItemsAdapter覆蓋getView()並通過膨脹xml設置行的佈局。

回答

0

我目前沒有太多時間。所以我今天晚些時候再看看。 反正看看我以前的問題,我用同樣的掙扎:

如果您的解決方案是不是在那裏(我認爲它是第一個)我們需要更多的代碼才能幫助你。

希望這會有所幫助。

+0

謝謝我看到第一篇文章有​​一些不同的代碼,並且我遇到了與物品跳轉相同的問題。那是什麼?我現在要試試這個方法。 – dropsOfJupiter 2011-01-26 17:37:16

+0

@dropsOfJupiter好的,試試,萬一你有問題告訴我! – Beasly 2011-01-26 18:02:51

0

我沒有太多運氣使用內置的功能進行選擇。

我看到你有你自己的自定義適配器,我猜測這意味着你將自定義視圖膨脹爲行。如果你的行有更多的東西,然後checkedtextview我不認爲你將能夠正確使用setSelections。

我使用我自己的模型和函數解決了這個問題。列表中的每個項目都有數據,以確定是否選擇了該項目。然後,我可以遍歷該數組,並通過切換選擇,甚至更新UI,方法是更改​​值並在適配器上調用notifydatasetchanged(使用getView並根據我的選擇模型進行檢查以繪製檢查)。

+0

謝謝,我已經在某處看到了checkedtextview實現,並會嘗試它,儘管我需要一些代碼。你甚至可以用OnTouchEvent來做到這一點,它似乎是一個矯枉過正的事情。不應該有一些非常簡單的東西嗎? :) BTW checkedtextview是一個控件或XML文件?我有我自己的xml文件,其中包含4到6個控件,它們都根據對象返回的內容動態地打開/關閉。它不只是純粹的TextView。很多東西都在適配器中完成getView() – dropsOfJupiter 2011-01-26 17:41:14

5

我能設法得到一個ListView的項目作爲選擇要設置時長點擊:

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

它只是工作,我叫requestFocusFromTouch()後。