2012-06-19 55 views
1

你好,在我的應用程序中,我將從遊標中獲取數據並將其放入ListActivity中。在長按列表視圖後顯示一個對話框android

我想長時間顯示對話框。

final ListView selectRoom = (ListView) findViewById(android.R.id.list); 
     selectRoom.setOnItemLongClickListener(new OnItemLongClickListener() { 

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

       Cursor unitCursor = (Cursor) getListView().getItemAtPosition(
         position); 
       int rid = unitCursor.getInt(0); 
       DBAccessor dba = new DBAccessor(getApplicationContext()); 
       dba.alterUnitName(rid); 
       callAdapter(); 
       final Dialog d = new Dialog(getApplicationContext()); 
       d.setContentView(R.layout.settings); 
       d.setTitle("My Dialog"); 
       d.show(); 

       return true; 

下面是與列表中的XML文件...

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <Spinner 
     android:id="@+id/spinnerRooms" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </Spinner> 

    <ListView 
     android:id="@android:id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/spinnerRooms"> 
    </ListView> 

</RelativeLayout> 

與光標的列中的XML文件...

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/unitId" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="invisible"/> 

    <TextView 
     android:id="@+id/unitName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/unitRoomId" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="invisible"/> 

</LinearLayout> 

預先感謝您..

+2

而問題是什麼? –

+0

對話框沒有出現 – yama

回答

1

使用setOnItemLongClickListener如下:

selectRoom.setOnItemLongClickListener(new OnItemLongClickListener(){ 
     @Override 
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
      // TODO Auto-generated method stub 
      Dialog(); 
    or 
final MyDialog rDialog=new MyDialog(this,this); 
      return false; 
     } 

    }); 

public void Dialog() { 

     AlertDialog.Builder dialogAlert = new AlertDialog.Builder(getApplicationContext()); 
     dialogAlert.setTitle("Demo ?"); 

     dialogAlert.show(); 
} 

//Another way 

public class MyDialog extends Dialog { 

Activity act; 
public ReminderSettingDialog(Context context,Activity act) { 
    super(context); 
    this.act=act; 
    // TODO Auto-generated constructor stub 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.settings); 

} 

}

+2

他已經分配了'setOnItemLongClickListener'。這個答案中有什麼新東西? –

+0

@munish我已經擴展ListActivity – yama

+0

您可以分別創建MyDialog類並使用ListActivity中的MyDialog對象 –

0

試試這個代碼:

selectRoom.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) { 
      return onLongListItemClick(v,pos,id); 
     } 
     protected boolean onLongListItemClick(View v, final int pos, long id) { 
      /////Display Dialog Here....................... 

        return true; 

    }); 
+0

onLongListItemClick()方法不可用 – yama

0

對話框應使用dialg建設者一樣,內置:

AlertDialog alertDialog = new AlertDialog.Builder(view.getContext()).create(); 
alertDialog.setTitle("Reset..."); 
alertDialog.setMessage("Are you sure?"); 
alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     // here you can add functions 
    } 
}); 
alertDialog.setIcon(R.drawable.icon); 
alertDialog.show(); 

希望它能幫助:)

相關問題