0

我有如下所示的列表视图

在此处输入图像描述

它是一种基于无线电的应用程序

因为当用户点击图像时,将调用 AsyncTask 并播放音乐并获取一些信息,这些信息将替换为 AMIT SIDDHPURA 文本

下面是我的代码

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

                @Override
                public void onClick(View v) {

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



                            }

    class StreamHolder {
        TextView txtStreamName;
        TextView txtStream;
        TextView txtMetadata;
        ImageView imgPlay;
    }

MetaDataTask2 类代码如下

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

    @Override
    protected com.example.xmlparsingex.IcyStreamMeta doInBackground(TextView... arg0) {
        txtView = arg0[0];

        return streamMeta;
    }

    @Override
    protected void onPostExecute(IcyStreamMeta result) {
        try {
            txtView.setText("Hiiiiiiiiiii............");
            MCObjectMetadata.cancel();
            MCObjectMetadata = new MyCounterMetadata(10000, 1000);
            MCObjectMetadata.start();

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

            startService(new Intent(CompaniesList.this, NotifyService.class));

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

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

但问题是 listview 没有更新意味着在 listview 中显示的橙色文本没有替换为Hiiiiiii

4

2 回答 2

0

您实际上需要重新创建适配器而不是调用notifyDataSetChanged(). 有关解释,请参阅此先前的 SO 答案

于 2013-02-14T15:15:08.660 回答
0

如果它是一个 ListView,我更愿意在适配器的 getView() 方法中更改 textview...或者如果列表是光标支持的,那么在 bindView() 中......我不确定你的方法。

于 2013-02-14T13:57:26.687 回答