在Android中实现AsyncTask和Listview的片段

Android新手

这是我的Java代码

但它不起作用,我没有得到我的错误。 快照

package info.androidhive.slidingmenu;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;   
import android.app.Fragment;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class CommunityFragment extends Fragment {


    public CommunityFragment(){}

    // Declare Variables
    JSONObject jsonobject;
    JSONArray jsonarray;
    ListView listview;
    ListViewAdapter adapter;
    ProgressDialog mProgressDialog;
    ArrayList<HashMap<String, String>> arraylist;
    static String RANK = "rank";
    static String COUNTRY = "country";
    static String POPULATION = "population";
    static String FLAG = "flag";


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_community, container, false);

        new DownloadJSON().execute();
        return rootView;
    }
    // DownloadJSON AsyncTask
    private class DownloadJSON extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Create a progressdialog
            mProgressDialog = new ProgressDialog(CommunityFragment.this);
            // Set progressdialog title
            mProgressDialog.setTitle("Student Government App");
            // Set progressdialog message
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.setIndeterminate(false);
            // Show progressdialog
            mProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            // Create an array
            arraylist = new ArrayList<HashMap<String, String>>();
            // Retrieve JSON Objects from the given URL address
            jsonobject = JSONFunctions
                    .getJSONfromURL("http://app-dlslsg.azurewebsites.net/json/postList.php");

            try {
                // Locate the array name in JSON
                jsonarray = jsonobject.getJSONArray("post");

                for (int i = 0; i < jsonarray.length(); i++) {
                    HashMap<String, String> map = new HashMap<String, String>();
                    jsonobject = jsonarray.getJSONObject(i);
                    // Retrive JSON Objects
                    map.put("rank", jsonobject.getString("id"));
                    map.put("country", jsonobject.getString("body"));
                    map.put("population", jsonobject.getString("stamp"));
                    map.put("flag", jsonobject.getString("image"));
                    // Set the JSON Objects into the array
                    arraylist.add(map);
                    //Log.i("body",COUNTRY);
                }
            } catch (JSONException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void args) {
            // Locate the listview in listview_main.xml
            listview = (ListView) findViewById(R.id.listview);
            // Pass the results into ListViewAdapter.java
            adapter = new ListViewAdapter(CommunityFragment.this, arraylist);
            // Set the adapter to the ListView
            listview.setAdapter(adapter);
            // Close the progressdialog
            mProgressDialog.dismiss();
        }
    }

}

我今天尝试在网上搜索所有内容,但没有机会看到任何相关问题。有人会帮我弄清楚这个吗?我将尽快回复这些答复,谢谢您的帮助!

劳德罗

片段不是上下文。您必须在使用的getActivity()地方使用CommunityFragment.this

更换

mProgressDialog = new ProgressDialog(CommunityFragment.this);

mProgressDialog = new ProgressDialog(getActivity());

adapter = new ListViewAdapter(CommunityFragment.this, arraylist);

adapter = new ListViewAdapter(getActivity(), arraylist);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在片段android中实现AsyncTask

来自分类Dev

Android开发-片段中AsyncTask的实现错误?

来自分类Dev

片段中实现listview

来自分类Dev

如何从不同的布局和类在 android 中实现 AsyncTask?

来自分类Dev

使用json和AsyncTask在ListView Android中打印名称

来自分类Dev

在Fragment android中实现AsyncTask

来自分类Dev

片段中的ListView和Tabwidget

来自分类Dev

片段中的ListView和Tabwidget

来自分类Dev

在片段Android中创建ListView

来自分类Dev

在片段Android中创建ListView

来自分类Dev

Android如何在我的自定义Listview中实现AsyncTask

来自分类Dev

android listview asynctask用于textview和imageview

来自分类Dev

单个片段中的GridView和ListView

来自分类Dev

片段中的AsyncTask

来自分类Dev

在Android片段活动中实现后退按钮

来自分类Dev

在Android片段活动中实现后退按钮

来自分类Dev

Android中的片段和线程

来自分类Dev

Android中的片段和ViewPager

来自分类Dev

片段中的Android listView单击时崩溃

来自分类Dev

片段Android上ListView中的错误

来自分类Dev

Android:使用片段的ListView中的onclick事件

来自分类Dev

片段中的Android ListView使用数组

来自分类Dev

在 Android 中的片段上更新 listView

来自分类Dev

AsyncTask,片段,视图和Backstack

来自分类Dev

线程asynctask和listview

来自分类Dev

android:片段无法加载片段AsyncTask ArrayAdapter

来自分类Dev

片段与列表片段中的ListView

来自分类Dev

片段与列表片段中的ListView

来自分类Dev

在Asynctask中实现接口