想要更新或刷新listview

时间:2013-02-14 13:33:31

标签: java android listview

我有listview,如下所示

enter image description here

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

当用户点击图像时,将调用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

2 个答案:

答案 0 :(得分:0)

如果它是一个ListView我宁愿更改适配器的getView()方法中的textview ...或者如果list是游标支持那么在bindView()中......我不确定你的方法。< / p>

答案 1 :(得分:0)

您实际上需要重新创建适配器而不是调用notifyDataSetChanged()。有关说明,请参阅this previous SO answer