我有一个只能选择一个项目的Listview。当该项获得点击时,它会运行AsyncTask。在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);
}
}
});
}
这是我的AsyncTask类。我的目标是在onPostExecute()的Title()方法中获取所选项(或TextView中与所选项关联的文本)。
Private Class Sizes extends AsyncTask<URL, Void, Float>
{
protected float doInBackground(URL...urls)
{
//gets url.getContentLength();
}
protected void onPostExecute(Float result)
{
AlertDialog.Builder alertbox = new AlertDialog.Builder(Vacation.this);
alertbox.setMessage( Title( ITEM FROM LISTVIEW ) );
alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int arg1)
{
}
});
alertbox.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int arg1)
{
}
});
alertbox.show();
}
}
再次感谢您的帮助!
答案 0 :(得分:1)
您可以使用position
侦听器的onItemClick
参数从数据源中获取单击的项目,然后将此数据传递给AsyncTask对象,并在那里使用它(在Alert中显示它)盒)
答案 1 :(得分:1)
如果您的任务是在您的活动范围内定义的,则可以使用final
关键字:
final String alertBoxTitle = vacation_menu[i];
Sizes work = new Sizes();
work.execute(tempLink);
和
alertbox.setMessage(alertBoxTitle);
如果您的任务不在您的活动范围内,您可以将标题作为参数或通过设置者传递。在你的情况下,塞特似乎更容易。
在你的任务中:
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);
答案 2 :(得分:0)
如果AsynTask
在您的活动内部,那么您可以访问listview
成员并获取所选项目。呼叫
mListView.getSelectedItem(); // returns the object associated with this item.
或
您可以通过参数将对象传递给AsyncTask
。
将标题字符串传递给Size
构造函数。喜欢这个
Sizes work = new Sizes(mListView.getSelectedItem().getTitle());
work.execute(tempLink);
答案 3 :(得分:0)
如果您只想创建一个警告对话框,则不需要AsyncTask .. 只需在onListItemClick中添加代码getSelectedItem并从中创建一个警告..