如何用适配器填充ListView

5分0k3

我知道这是一个非常简单的问题,但是我是Android开发中的新手,因此请放轻松。
我遇到的问题是存在于我的主要活动中的一个片段(特别是AsyncTask)中。AsyncTask将数据发送到php脚本,然后根据json格式返回数据。然后将其处理并保存到jsonlist数组。直到执行后一切正常为止,可以下载,处理良好的数据。但是,当程序到达执行后,问题就会开始出现。基本上我无法列出jsonlist到listview的所有数据

    //setting up an array
    ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();
    //creating list view variable
    ListView listview;
    //Define work in progress dialog
    private ProgressDialog mProgressDialog;  

private class ProgressTask extends AsyncTask<String, Void, Boolean> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            // Create a progressdialog
            mProgressDialog = new ProgressDialog(getActivity());

            // Set progressdialog title
            mProgressDialog.setTitle("Please wait");

            // Set progressdialog message
            mProgressDialog.setMessage("Fetching data...");
            mProgressDialog.setIndeterminate(false);

        }

        @Override
        protected Boolean doInBackground(String... params) {
            //To do in the background
            //Define variable of JSON parser type
            JSONParser jParser = new JSONParser();

            //Pass url to json parser class to fetch and save it into array variable
            JSONArray json = jParser.getJSONFromUrl(url);

            //loop from 0 to length of an array by increasing by 1
            for (int i = 0; i < json.length(); i++) {

                //Try and catch routine to prevent any crashes
                try {
                    //Get an object defined in { ... } in original json file
                    JSONObject c = json.getJSONObject(i);

                    //Separate object by obtaining values for each of the sections
                    String vtitle = c.getString(title);
                    String vcontent = c.getString(content);
                    String vuser = c.getString(user);

                    HashMap<String, String> map = new HashMap<String, String>();

                    //Fill up an array with data extracted
                    map.put(title, vtitle);
                    map.put(content, vcontent);
                    map.put(user, vuser);

                    //Add values into jsonlist
                    jsonlist.add(map);

                } catch (JSONException e)
                {
                    //In case of any error Stack trace will be returned
                    e.printStackTrace();
                }
            }
            //Once everything has been done return null value
            return null;
        }
        @Override
        protected void onPostExecute(Boolean aBoolean) {
            //Insert all data downloaded through list adapter
            ListAdapter adapter = new SimpleAdapter(getActivity(), jsonlist, R.layout.list_activity, new String[] { title, content, user }, new int[] { R.id.title, R.id.content, R.id.user });

            // Locate the listview 
            //listview = (ListView) findViewById(R.id.list);

            // Set the adapter to the ListView
            //listview.setAdapter(adapter);

            //Get rid off dialog when operation of fetching data has been done
            if (mProgressDialog.isShowing()) {
                mProgressDialog.dismiss();
            }
        }
    }

如您所见,我已经尝试了注释的代码,但是listview = (ListView) findViewById(R.id.list);返回以下错误:

无法解析方法findViewById(int)

这使我无法执行程序。这非常令人沮丧,因为我实际上将我需要的所有数据存储在一个数组中,但是只有一行代码使我无法显示它。

我也尝试过:

    ListAdapter adapter = new SimpleAdapter(context, jsonlist, R.layout.list_activity, new String[] { title, content, user }, new int[] { R.id.title, R.id.content, R.id.user });
    setListAdapter(adapter);
    lv = getListView();

但是与以前的情况一样,返回了未解决方法的错误。这是由于片段被片段扩展并向其添加任何内容而导致崩溃的事实

public class Fragment2 extends Fragment, ListActivity {...}
达米安·科兹拉克(Damian Kozlak)

将此添加到Fragment2类中的代码中

private ListView listview;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.YOUR_FRAGMENT_LAYOUT, container, false);

    listview = (ListView) v.findViewById(R.id.R.id.list);
    return v;
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Firebase适配器填充ListView

来自分类Dev

如何设置ListView适配器

来自分类Dev

ListView,适配器异常

来自分类Dev

如何从适配器更新sqlite listview项目?

来自分类Dev

如何使用游标适配器刷新listView

来自分类Dev

对于ListView适配器,如何调用getView()?

来自分类Dev

如何正确实现ListView的适配器

来自分类Dev

如何从Android的Listview中删除适配器

来自分类Dev

如何在其适配器中刷新android listview

来自分类Dev

如何将毕加索传递到ListView适配器

来自分类Dev

如何将ImageView与ListView的适配器分开

来自分类Dev

片段的ViewPager中的Listview适配器-如何获取活动

来自分类Dev

如何从 Activity 调用 ListView 适配器的 getItem(i)

来自分类Dev

如何使片段内的 Listview 适配器工作

来自分类Dev

无法使用使用填充了JSON对象的HashMap的适配器填充ListView

来自分类Dev

使用翻新填充阵列适配器

来自分类Dev

使用翻新填充阵列适配器

来自分类Dev

ListView设置适配器片段nullpointerexception

来自分类Dev

按钮Listview适配器中的showDialog

来自分类Dev

ListView的自定义适配器

来自分类Dev

ListView适配器拧紧物品的高度

来自分类Dev

ListView适配器崩溃活动

来自分类Dev

ListView适配器出现问题

来自分类Dev

ListView设置适配器片段nullpointerexception

来自分类Dev

Android ListView适配器未过滤

来自分类Dev

案例研究:ListView适配器,HashMap

来自分类Dev

更新listView /刷新适配器

来自分类Dev

使用Listview适配器显示aChartengine

来自分类Dev

Android ListView适配器...不重绘