2014-01-06 16 views
0

我目前有一個鬧鐘應用程序,它將所有鬧鐘保存到一個數組中,然後將它們顯示在自定義列表視圖中。當點擊列表視圖時,應用程序會轉到單獨的屏幕來編輯鬧鐘。我現在想要將刪除功能添加到應用程序中。ListFragment onListItemClick多個功能

我目前的想法是在列表視圖上方有一個刪除和編輯按鈕,當用戶單擊其中一個按鈕時,列表視圖的功能也會相應改變。所以如果他們點擊編輯,那麼他們點擊的任何警報都會進入編輯屏幕。如果他們點擊刪除,他們點擊的警報將從數組中刪除。下面

代碼顯示OnListItemClick方法(目前進入到編輯屏幕)和我OnClick方法爲我的兩個按鈕:

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    //pass the alarm name as a string to the activity 
    String name = savedAlarmArray[position].getmName(); 

    listItemCallback.onEditAlarmSelected(name); 
} 

@Override 
public void onClick(View v) { 
    switch(v.getId()) { 
     case R.id.delete_button: 
      // Now the onListItemClick will delete the alarm; 


      break; 
     case R.id.edit_button: 
      // Now the onListItemClick will edit the alarm; 
      break; 

    } 
} 
+0

只是好奇你的設計選擇。爲什麼不選擇用戶更可能理解的更加標準的選項?例如,向編輯頁面添加刪除按鈕,使用上下文操作欄提供刪除按鈕,或使用手勢允許用戶輕掃列表項以刪除警報。 –

+1

你可以使用onItemLongClickListener來添加刪除選項 – zozelfelfo

+0

我對Android來說很新穎,還沒有使用過動作條。我會閱讀它,並且很可能會根據這些答案來實施它。 – user3166589

回答

0

我想你應該尋找一個更加用戶友好的方式來做到這一點,但在這裏你去。

private boolean editMode = false; 
... 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    //pass the alarm name as a string to the activity 
    String name = savedAlarmArray[position].getmName(); 
    if(editMode){ 
     listItemCallback.onEditAlarmSelected(name); 
    } else { 
     //delete 
    } 
} 

@Override 
public void onClick(View v) { 
    switch(v.getId()) { 
     case R.id.delete_button: 
      // Now the onListItemClick will delete the alarm; 
      editMode = false; 
      break; 
     case R.id.edit_button: 
      // Now the onListItemClick will edit the alarm; 
      editMode = true; 
      break; 

    } 
}