任何人都可以帮助我,如何在单击时从列表视图存储行的值位置?我想在另一个类的onPostExecute中使用该值。谢谢您的时间。这是我的代码。
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = LayoutInflater.from(c).inflate(R.layout.model, viewGroup, false);
}
...
final Pending s = (Pending) this.getItem(i);
...
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
*//here is where I want to get the position to use on my updateData()'s onPostExecute*
final String id = 2;
String link = "http://abcabcabc.com/abc.php?id=" + id;
new updateData().execute(link);
}
});
return view;
}
而且,如何在onPostExecute中调用它以显示一些数据?
行的位置是您的i
方法中的参数getView
:
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
//i is the position of the row
}
为了在onPostExecute
的AsyncTask
方法中使用行的位置,您需要将行作为参数传递给“ updateData”类。
但是,问题是AsyncTask
只能接受一种类型的数据作为参数,并且目前它只能接受字符串。
为了解决这个问题,并且能够同时传递URL(字符串)和id(int),您可以创建一个类(其名称更好,代表您对链接的操作):
public class DetailLink {
private String link;
private int id;
//getters and setters
}
然后,在您的“ updateData”类中,将Params
类型参数更改为DetailLink
类型而不是String。这意味着您的doInBackground
方法将接受DetailLink
作为参数。为了存储id以便可以使用onPostExecute
方法,请将其另存为“ updateData”类的实例变量。
private class UpdateDataTask extends AsyncTask<DetailLink, Void, Void> {
private int myId;
protected void doInBackground(DetailLink... detailLink) {
myId = detailLink.getId();
String url = detailLink.getLink();
//do your task here
}
protected void onPostExecute() {
//do something with the myId instance variable
}
}