我需要在我的应用中使用线程帮助。我有一个有listview的活动。每个listview项目都有一个按钮和一个textview。我想让每个按钮单击在自己的线程中运行并更新其行上的corlexponding textview控件。
我是一名初学Android开发人员,并希望对此有所了解。香港专业教育学院曾尝试过植入AsyncTask子类,但无法弄清楚如何为每个按钮执行此操作并让它更新textview。
谢谢!
答案 0 :(得分:6)
每次对项目执行AsyncTask
时,您必须调用相同click
的新实例。
OnItemClickListener itemListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long arg3) {
asyncTaskName newTask = new AsyncTaskName(view , position);
newTask.execute();
}
}
视图和位置是构造函数的一部分,因为您希望更新项目,即视图的用途,并且位置是根据asyncTask中的位置执行独特的操作。
在你的asyncTask中,你可能需要类似于我在下面所做的事情。
private class asyncTaskName extends AsyncTask<Void, Void, Void> {
private View mView;
private int mPosition;
public asyncTaskName(View view, int position){
mView = view;
mPosition = position;
}
protected void doInBackground(Void... urls) {
// do something you have to here based on mPosition.
return null;
}
protected void onPostExecute(Void result) {
// now update the textView here
TextView tv = (TextView) mView.findViewById(yourTextViewId);
// now you have reference to tv, probably update the text by
tv.setText(yourString);
}
}
HTH。