Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android listview中来自所选项目的警报对话框_Android_Listview_Android Alertdialog - Fatal编程技术网

Android listview中来自所选项目的警报对话框

Android listview中来自所选项目的警报对话框,android,listview,android-alertdialog,Android,Listview,Android Alertdialog,我在alertdialog对话框中遇到一些问题。我有一个包含一些字符串的列表视图,当我单击该框时,它会显示一个警报对话框,提供预订或取消选项(这是一个出租车应用程序)。我正在尝试获取它,以便在“警报”对话框中显示所选项目的名称。但每次我尝试时,它都会显示随机的字母和数字。我将发布我的代码,因为它可能更容易理解: 代码如下- public class TaxiMain extends ListActivity { /** Called when the activity is first crea

我在alertdialog对话框中遇到一些问题。我有一个包含一些字符串的列表视图,当我单击该框时,它会显示一个警报对话框,提供预订或取消选项(这是一个出租车应用程序)。我正在尝试获取它,以便在“警报”对话框中显示所选项目的名称。但每次我尝试时,它都会显示随机的字母和数字。我将发布我的代码,因为它可能更容易理解:

代码如下-

public class TaxiMain extends ListActivity {
/** Called when the activity is first created. 
 * @return */

class Taxi {
    private String taxiName;
    private String taxiAddress;

    public String getName() {
        return taxiName;
    }

    public void setName(String name) {
        taxiName = name;
    }

    public String getAddress() {
        return taxiAddress;
    }

    public void setAddress(String address) {
        taxiAddress = address;
    }

    public Taxi(String name, String address) {
        taxiName = name;
        taxiAddress = address;
    }
}

public class TaxiAdapter extends ArrayAdapter<Taxi> {
    private ArrayList<Taxi> items;
    private TaxiViewHolder taxiHolder;

    private class TaxiViewHolder {
        TextView name;
        TextView address; 
    }

    public TaxiAdapter(Context context, int tvResId, ArrayList<Taxi> items) {
        super(context, tvResId, items);
        this.items = items;
    }

    @Override
    public View getView(int pos, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.taxi_list_item, null);
            taxiHolder = new TaxiViewHolder();
            taxiHolder.name = (TextView)v.findViewById(R.id.taxi_name);
            taxiHolder.address = (TextView)v.findViewById(R.id.taxi_address);
            v.setTag(taxiHolder);
        } else taxiHolder = (TaxiViewHolder)v.getTag(); 

        Taxi taxi = items.get(pos);

        if (taxi != null) {
            taxiHolder.name.setText(taxi.getName());
            taxiHolder.address.setText(taxi.getAddress());
        }

        return v;
    }
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final String[] taxiNames = getResources().getStringArray(R.array.taxi_name_array);
    final String[] taxiAddresses = getResources().getStringArray(R.array.taxi_address_array);

    ArrayList<Taxi> taxiList = new ArrayList<Taxi>();

    for (int i = 0; i < taxiNames.length; i++) {
        taxiList.add(new Taxi(taxiNames[i], taxiAddresses[i]));
    }

    setListAdapter(new TaxiAdapter(this, R.layout.taxi_list_item, taxiList));  

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

        lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> a, View v, final int position, long id)
        {   

            final int selectedPosition = position;
            AlertDialog.Builder adb=new AlertDialog.Builder(TaxiMain.this); 
             adb.setTitle("Taxi Booking");
             adb.setMessage("You Have Selected: "+taxiNames); 
             adb.setPositiveButton("Book", new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int id) {
                     Intent intent = new Intent(TaxiMain.this, Booking.class);
                     intent.putExtra("booking",  taxiNames[selectedPosition]);
                     intent.putExtra("address",  taxiAddresses[selectedPosition]);
                     startActivity(intent);
                 }
             });
             adb.setNegativeButton("Cancel", null); 
             adb.show();
         }
     });
如果有人能帮忙看看为什么这场演出不会有很大的帮助


谢谢

taxiNames是一个数组,而不是字符串。你应该试试这个:

adb.setMessage("You Have Selected: "+taxiNames[selectedPosition]); 

taxiNames是一个数组,而不是字符串。你应该试试这个:

adb.setMessage("You Have Selected: "+taxiNames[selectedPosition]); 

当您键入
+taxiNames
时,您正在执行
taxiNames.toString()
taxiNames
是一个包含多个项目的数组。您只需将其更改为
+taxiNames[position]
。或者,为了使它与其他滑行对象保持一致,您也可以使用
+taxiList.get(position).getName()


编辑:出于好奇,为什么要为
selectedPosition
设置另一个
final int
?您已经在方法调用中传递了
最终int位置。

当您键入
+taxiNames
时,您正在执行
taxiNames.toString()
taxiNames
是一个包含多个项目的数组。您只需将其更改为
+taxiNames[position]
。或者,为了使它与其他滑行对象保持一致,您也可以使用
+taxiList.get(position).getName()


编辑:出于好奇,为什么要为
selectedPosition
设置另一个
final int
?您已经在方法调用中传递了
final int position

我认为
int position
最初不是
final
,而是在方法中的其他地方使用的。你是对的,现在可以直接使用
位置。它只是用于警报对话框。我终于做对了哈哈!你不知道我觉得这有多紧张!赞扬堆栈溢出及其用户。你知道为什么伊斯梅尔·卡特曼编辑了我的问题吗?就在你的头顶上answer@dave:啊,好吧,我想是有道理的@奥利:你可以点击“编辑人”一行来查看编辑,通常高代表性的人会编辑来修正格式错误之类的。嘿,伙计!你有没有可能看看我最近的问题并提出一些建议?因为你比任何人都清楚这一点。干杯兄弟,我认为
int position
最初不是
final
,而是在该方法的其他地方使用的。你是对的,现在可以直接使用
位置。它只是用于警报对话框。我终于做对了哈哈!你不知道我觉得这有多紧张!赞扬堆栈溢出及其用户。你知道为什么伊斯梅尔·卡特曼编辑了我的问题吗?就在你的头顶上answer@dave:啊,好吧,我想是有道理的@奥利:你可以点击“编辑人”一行来查看编辑,通常高代表性的人会编辑来修正格式错误之类的。嘿,伙计!你有没有可能看看我最近的问题并提出一些建议?因为你比任何人都清楚这一点。干杯,兄弟!我把它设置在之前的位置,这就是它不工作的原因。传奇干杯,伙计!我把它设置在之前的位置,这就是它不工作的原因。传奇