1

我现在有一个带有几个字符串的列表视图。当用户选择一个时,它会弹出一个警告对话框,可以选择预订(这将是一个出租车应用程序)或取消。我无法解决的是如何获取它,以便当用户单击“预订”时,它会获取他们选择的信息并加载一个包含更多联系信息的新视图。

我的代码目前是这个 -

public class ListTaxi extends 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(); 
       } 
 }); 

对此的任何帮助或指示将不胜感激,因为它是我在几乎完成之前需要开始工作的最后一点。

谢谢大家

奥利

4

3 回答 3

0

一种方法可能是将您的物品从出租车清单中取出:

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");
于 2011-01-03T13:19:57.920 回答
0

您可以从 alertDialog 类中使用此方法

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

请参阅链接 http://developer.android.com/reference/android/app/AlertDialog.html 取决于积极响应,说书是积极响应然后开始另一个显示详细联系信息的活动,将列表中的选择项目作为捆绑传递或在开始另一项活动时有额外的意图。

于 2011-01-03T13:20:36.093 回答
0

您需要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");
    }
}
于 2011-01-03T13:27:49.377 回答