0

AsyncTask を使用して TextView のテキストを更新したいと考えています。

私は2つのTextViewがあり、1つはImageViewであるというリストビューを持っています

ユーザーが ImageView ボタンを押すと、サーバー側からソングが再生されます。だから私は AsyncTask タスクにコードを入れました

これは、ImageView の on Click イベントを呼び出しているカスタム アダプターです。以下は、このような私のコード サンプルです。

     public View getView(final int position, View convertView,
            ViewGroup parent) {

     holder.imgPlay.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

およびonclickイベントは、asynctaskでtextviewを渡しています。これは、インターネットからデータを取得した後に変更したいので、以下が私のコードです

     new MetadataTask2().execute(holder.txtMetadata); 

今AsyncTaskのコードは以下です

    class MetadataTask2 extends AsyncTask<TextView, Void, IcyStreamMeta> {
    TextView txtView;

    @Override
    protected IcyStreamMeta doInBackground(
            TextView... arg0) {
                    //SOME OPERATION
        txtView = arg0[0];
        return streamMeta;
    }

    @Override
    protected void onPostExecute(IcyStreamMeta result) {
            txtView.setText("Hiiiiiiii");
        }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        try {
            PD = ProgressDialog.show(CompaniesList.this, "Tuning...",
                    "Please Wait...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ここで、textView.setText("Hiii") を使用するとテキストが更新されることがわかりますが、ListView または Adapter を更新する必要があるため、Listview には反映されませんが、その方法がわからないため、テキストを表示できますリストビューはどんな体でも私を助けることができますか

リストビューを更新するために以下のコードを使用しましたが、まだ何もしません

      adapter.notifyDataSetChanged(); 
      mainListView.setAdapter(adapter); 
      mainListView.invalidate(); 
4

2 に答える 2

1

ListViewリスト ビューにデータを提供する独自のアダプタを実装する必要があります。アダプターから呼び出すnotifyDataSetChanged()と、PostExecute()リスト ビューがアダプターからデータをフェッチするように強制されます。リスト ビュー ビューを直接更新するのは奇妙に見えます。

于 2013-02-14T07:57:24.773 に答える
1

アダプターをアクティビティ クラスのメンバー変数にします。これで onPostExecute から参照できるようになります。

また、あなたのコードから、TextView が実際に変更しようとしているもの (おそらく膨らませたもの) であるかどうかは明確ではありませ。任意のコンポーネント。この Textview 変数 (arg0[0]??) が膨張させているものであることを確認してください

于 2013-02-14T07:45:19.587 に答える