在listview项目按钮单击上需要有关AsyncTask的帮助

时间:2011-09-18 14:12:56

标签: android multithreading listview textview

我需要在我的应用中使用线程帮助。我有一个有listview的活动。每个listview项目都有一个按钮和一个textview。我想让每个按钮单击在自己的线程中运行并更新其行上的corlexponding textview控件。

我是一名初学Android开发人员,并希望对此有所了解。香港专业教育学院曾尝试过植入AsyncTask子类,但无法弄清楚如何为每个按钮执行此操作并让它更新textview。

谢谢!

1 个答案:

答案 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。