2011-12-06 55 views
0

我有一個ListView,它有3行。我想控制可點擊的行,例如最初只有第一行可以點擊,然後第二行可以點擊,然後第三行可以點擊。另外,我想補充一點,每行單擊後,AlertDialog將以單選項目打開。獲取選定值後,其他行可以點擊。我如何處理這種情況?請幫幫我。Android ListView控件行可點擊

+0

你在使用作爲Adapter..I意味着ListAdapter,CursorAdapter的? – havexz

+0

我正在使用BaseAdapter,並且在點擊行後,會出現一個帶有單選項的AlertDialog。 – adaclks

回答

0

當您在列表視圖中添加偵聽器時,onItemClick函數會收到您單擊的位置。你可以有一個初始化爲0的int變量來知道哪些行可以被引用。

事情是這樣的:

int current_position = 0; 

myList.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id){ 
     if(position == 0) //Your stuff (current_position = 1) 
     if(position == 1) // 
    } 
}); 

希望這有助於...

+0

我想我應該用詳細的方式解釋我的問題。 正如我所說,有3行,每行單擊後,我創建一個AlertDialog.Builder單選項。 您的建議很好,但在我的情況下可能會有問題,因爲AlertDialog打開後,用戶可以按「後退」,我無法獲得選定的值。除此之外,遞增current_position提供用戶點擊另一行。 – adaclks

0

更好地使用滾動型3行來模擬一個ListView。之後,您可以輕鬆控制每行的點擊事件。

+0

感謝您的回覆,請您舉個明確的例子嗎? – adaclks

0

如果您使用BaseAdapter請嘗試使用isEnabled api。即使這個API是分離器的意思。您可以最初返回第2行和第3行的false,然後根據您的邏輯返回true。

另一個API areAllItemsEnabled,對此,您已經返回false

編號:

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(inthttp://developer.android.com/reference/android/widget/BaseAdapter.html#areAllItemsEnabled()

+0

我用這種方式,我真的很感激。但我也有一個小問題,我有一個超過3行的標題,我可以很容易地控制哪些行是可點擊的,但不是標題。對於第一行,我調用BaseAdapter.isEnabled(0),而對於標題-1不起作用。 – adaclks

+0

你的意思是你叫'isEnabled'?所以你說你有4行,第一行是標題。所以在這種情況下,標題在索引0處。或者我錯過了一些東西 – havexz