如何在android中使用带有AsyncTask的片段内的listview

时间:2013-03-18 07:49:47

标签: android android-listview android-asynctask

我有一个Fragment,里面有一个ListView。现在我使用AsyncTaskdoInBackGround()的帮助下从互联网上获取一些数据。现在,我想在ArrayAdapter onPostExecute()的帮助下将该数据设置为Fragment内的ListView。如何在ListView内的Fragment内添加数据?

这会产生问题,因为我的Fragment没有Context

package com.example.the_hindu_news;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;

public class Async_list extends AsyncTask<Context, Integer, String> {

    private Internet_list ob_il;
    private String[] news;
    private String[] link;
    ListView ls;
    Base_class ob_bc;

    public Async_list(ListView ls, Base_class ob_bc) {
        this.ls = ls;
        this.ob_bc = ob_bc;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected String doInBackground(Context... params) {
        try {
            ob_il = new Internet_list();

            ob_il.parser();
            ob_il.parse_VIA_pull_parser();

            news = ob_il.return_news();
            link = ob_il.return_links();
        } catch (final Exception err) {
            Log.i("doInBackGround() : " + err.toString(), "tushar");
        }
        return null;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void onPostExecute(String result) {
        try {
            final ArrayAdapter<String> adapter = new ArrayAdapter<String>(ob_bc,
                    android.R.layout.simple_list_item_1, news);
            ls.setAdapter(adapter);
        } catch (final Exception err) {
            Log.i("onPostExecute() : " + err.toString(), "tushar");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

为示例定义一个接口:

interface NetworkListener <T>{
    public void updateData(List<T>);
}

您的片段实现此界面并更新您的列表。为AsyncTask提供接口。