2017-03-21 48 views
-1

我的問題是:我如何將項目位置傳遞給另一個類。請看我附上的代碼。當我按AlertDialog內的正面按鈕,我去HandleAlertDialog類,並在那裏我刪除名稱的ID(在數據庫中我有兩個變量:ID和名稱)。我如何從onItemLongClick項目位置傳遞給另一個類?

我不知道如何將ID從項目位置傳遞到HandleAlertDialog類中的sqhelper.deleteNameByNumber(id)。

謝謝你的幫助。

public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     AlertDialog dialog = new AlertDialog.Builder(this) 
      .setMessage("Choose one of the options") 
      .setPositiveButton("Yes", new HandleAlertDialog()) 
      .setNeutralButton("No",new HandleAlertDialog()) 
      .setCancelable(false) 
      .create(); 
     dialog.show(); 
     return false; 
     } 

    public class HandleAlertDialog implements DialogInterface.OnClickListener { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      if (which==-1){ 
       sqhelper.deleteNameByNumber(**???**); 
      } 
     } 
    } 

回答

1

可以在HandleAlertDialog類中定義id屬性(我認爲這是一個String我的例子):

public class HandleAlertDialog implements DialogInterface.OnClickListener { 
    private String id; 

    public HandleAlertDialog(String id){ 
     this.id = id; 
    } 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     if (which==-1){ 
      sqhelper.deleteNameByNumber(id); 
     } 
    } 
} 

,然後在onItemLongClick使用它:

public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 

    // Retrieve id here (based on view, position ?) 
    String id = "THIS IS YOUR ID"; 
    HandleAlertDialog handleAlertDialog = new HandleAlertDialog(id); 

    AlertDialog dialog = new AlertDialog.Builder(this) 
     .setMessage("Choose one of the options") 
     .setPositiveButton("Yes", handleAlertDialog) 
     .setNeutralButton("No", handleAlertDialog) 
     .setCancelable(false) 
     .create(); 
    dialog.show(); 
    return false; 
} 
+0

我怎麼能檢索從項目位置的ID?我有兩個變量(ID,名稱)類名。 – Alexey

+0

使用項目位置從您用來顯示它們的列表中獲取'Name'對象,我無法提供更多幫助,因爲我沒有Name和ListView適配器 –

0

只需在構造函數中傳遞id即可。

public boolean onItemLongClick (AdapterView parent, View view,int position, final long id){ 
     AlertDialog dialog = new AlertDialog.Builder(this) 

       .setMessage("Choose one of the options") 
       .setPositiveButton("Yes", new HandleAlertDialog(id)) 
       .setNeutralButton("No", new HandleAlertDialog(id)) 
       .setCancelable(false) 
       .create(); 
     dialog.show(); 

     return false; 
    } 

添加構造函數。

public class HandleAlertDialog implements DialogInterface.OnClickListener 
{ 
    long id; 

    public HandleAlertDialog(long id) { 
     this.id = id; 
    } 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     if (which==-1){ 
      sqhelper.deleteNameByNumber(id); 
     } 
    } 
} 

只是讓我知道,如果它不明確。

相關問題