Java 如何从ListView中提取所选项目?

Java 如何从ListView中提取所选项目?,java,android,listview,textview,android-asynctask,Java,Android,Listview,Textview,Android Asynctask,我有一个Listview,它只能选择一个项目。当该项被单击时,它将运行一个异步任务。在onPostExecute()中,会弹出一个AlertBox对话框。但是我要做的是让选中的项目显示在alertBox中,我已经尝试了我能想到的一切。任何帮助都将不胜感激,并提前向您表示感谢 这是我的ListView设置 Public class MyClass extends Activity { list.setAdapter(new ArrayAdapter<String>

我有一个Listview,它只能选择一个项目。当该项被单击时,它将运行一个异步任务。在onPostExecute()中,会弹出一个AlertBox对话框。但是我要做的是让选中的项目显示在alertBox中,我已经尝试了我能想到的一切。任何帮助都将不胜感激,并提前向您表示感谢

这是我的ListView设置

    Public class MyClass extends Activity
    {
    list.setAdapter(new ArrayAdapter<String>(this, R.layout.vacation_tracks, vacation_menu));

    list.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {

            for(int i = 0; i<vacation_menu.length; i++)
            {

                if(((TextView) view).getText().equals(vacation_menu[i]))
                {

                    Sizes work = new Sizes();
                    work.execute(tempLink);
            } 
        }
    }); 
   }
公共类MyClass扩展活动
{
list.setAdapter(新的ArrayAdapter(这个,R.layout.vacation_曲目,vacation_菜单));
list.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{

对于(int i=0;i您可以使用
onItemClick
侦听器的
position
参数从数据源获取单击的项,然后将此数据传递给AsyncTask对象,并在那里使用它(在警报框中显示)

如果
AsynTask
在您的活动中,则您可以访问
listview
成员并获取所选项目。调用

mListView.getSelectedItem(); // returns the object associated with this item.

您可以通过参数将对象传递给
AsyncTask
。 将标题字符串传递给
Size
构造函数

Sizes work = new Sizes(mListView.getSelectedItem().getTitle());
work.execute(tempLink); 

如果任务是在活动范围内定义的,则可以使用
final
关键字:

final String alertBoxTitle = vacation_menu[i];
Sizes work = new Sizes();
work.execute(tempLink);

如果您的任务不在活动范围内,您可以将标题作为参数传递或通过setter传递。setter在您的情况下似乎更容易

在您的任务中:

String title;

public void setTitle(String title) {
  this.title = title;
}

protected void onPostExecute(Float result) {
  AlertDialog.Builder alertbox = new AlertDialog.Builder(Vacation.this);
  alertbox.setMessage(title);
  // ...
}
像这样使用它:

Sizes work = new Sizes();
work.setTitle(vacation_menu[i]);
work.execute(tempLink);

如果只想创建一个警报对话框,则不需要AsyncTask。。
只需将代码getSelectedItem添加到你的onListItemClick中,然后从中创建一个警报。

为什么你要在你的
onItemClick中的
vacation\u菜单上循环?
position
包含单击项的索引。我想他的意思是异步任务运行(某物…)当对话结束时,他展示了一段警觉的对话。这就是我需要的例子。非常感谢。)
String title;

public void setTitle(String title) {
  this.title = title;
}

protected void onPostExecute(Float result) {
  AlertDialog.Builder alertbox = new AlertDialog.Builder(Vacation.this);
  alertbox.setMessage(title);
  // ...
}
Sizes work = new Sizes();
work.setTitle(vacation_menu[i]);
work.execute(tempLink);