簡體   English   中英

Android-單擊Alertdialog按鈕時更改視圖

[英]Android - Change View when alertdialog button is clicked

我現在有幾個字符串的列表視圖。 當用戶選擇一個時,它會彈出一個警告對話框,其中提供了預訂(這將是出租車應用程序)或取消的選項。 我無法解決的是如何獲取它,以便當用戶單擊“預訂”時,它將獲取他們選擇的信息並加載包含更多聯系信息的新視圖。

我的代碼目前是這樣-

公共類ListTaxi擴展ListActivity {/ **首次創建活動時調用。 * / public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);

    String[] taxi = getResources().getStringArray(R.array.taxi_array);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.listtaxi, taxi));

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);

        lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> a, View v, int position, long id)
       {   
           AlertDialog.Builder adb=new AlertDialog.Builder(ListTaxi.this); 
           adb.setTitle("Taxi Booking");
           adb.setMessage("You have chosen = "+lv.getItemAtPosition(position)); 
          adb.setPositiveButton("Book", null);
          adb.setNegativeButton("Cancel", null); 
          adb.show(); 
       } 
 }); 

對此的任何幫助或指點將不勝感激,因為這是我幾乎需要完成的最后工作。

感謝大家

奧利

一種方法是將您的物品從出租車清單中刪除:

taxi.get(position);

並通過意圖將其傳遞到下一個活動:

Intent intent = new Intent(this, YOUR_NEXT_ACTIVITY.class);    
intent.putExtra("booking",  taxi.get(position);

在下一個活動中,您可以通過以下方式獲得它:

intent = getIntent();
inten.getExtra("booking");
// could be (not sure): inten.getExtraString("booking");

您可以從alertDialog類使用此方法

public void setButton (int whichButton, CharSequence text, DialogInterface.OnClickListener listener) 

根據肯定的響應,請參考鏈接http://developer.android.com/reference/android/app/AlertDialog.html ,說書是肯定的響應,然后啟動另一個顯示詳細聯系方式的活動,將列表中的選擇項作為Bundle傳遞或在開始其他活動時要有意向。

您需要將onClickListener放到肯定按鈕上,這將啟動新活動並將數據傳遞給它。 您的代碼將變為:

public class ListTaxi extends ListActivity{ /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final String[] taxi = getResources().getStringArray(R.array.taxi_array);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.listtaxi, taxi));

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> a, View v, int position, long id)
    {   
        final int selectedPosition = position;
        AlertDialog.Builder adb=new AlertDialog.Builder(ListTaxi.this); 
        adb.setTitle("Taxi Booking");
        adb.setMessage("You have chosen = "+lv.getItemAtPosition(position)); 
        adb.setPositiveButton("Book", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Intent intent = new Intent(getApplicationContext(), NextActivity.class);
                intent.putExtra("booking",  taxi[selectedPosition];
                startActivity(intent);
            }
        });
        adb.setNegativeButton("Cancel", null); 
        adb.show(); 
    }
});

在您的目標活動中,執行以下操作:

Intent intent = getIntent();
String booking = "";
if (intent != null) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
        booking = extras.getString("booking");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM