我简单的适配器惯于填充我的ListView [英] My Simple Adapter Wont Populate my listview

查看:145
本文介绍了我简单的适配器惯于填充我的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建通过JSON数据的Andr​​oid应用程序,我的code将循环,如果找到匹配,我已经摆在(在这种情况下,吉尔河埃尔南德斯)的字符串,那么它将增加该名称到包含HashMap数组列表。然后,我填充我的ListView用一个简单的适配器。一切工作正常,但我的列表视图将不会出现。我做这个排序算法错了吗?另外,如果你知道一个更好的办法来进行排序,以找到一个match..PLEASE让我知道。我仍然新本。谢谢你在前进!

I am creating an android application and my code will loop through the json data and if finds a match to the string that i have placed in ( in this case "Guil Hernandez") , then it will add that name to an array list of hashmaps. I then populate my listview with a simple adapter. Everything is working properly, but my listview will not appear. Am i doing this sorting "algorithm" wrong? Also if you know of a better way to do the sorting to find a match..PLEASE LET ME KNOW. i am still new to this. Thank you in advance!

    private void handleResponse() {

    if (mNameDataJson == null ) {
       // TODO: handle error
    } else {
        try {
            JSONArray namesArray = mNameDataJson.getJSONArray("posts");
            ArrayList<HashMap<String , String> > nameArrayList = new ArrayList<HashMap<String, String>>();

            for ( int i  = 0 ; i < namesArray.length() ; i++ ) {

                JSONObject unit = namesArray.getJSONObject(i);
                String name = unit.getString(KEY_NAME);
                name = Html.fromHtml(name).toString();
                String title = unit.getString(KEY_TITLE);
                title = Html.fromHtml(title).toString();

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

                if (name == "Guil Hernandez") {

                    hashMap.put(KEY_NAME, name);
                    hashMap.put(KEY_TITLE, title);

                    nameArrayList.add(hashMap);
                } else {
                    Log.v(TAG , "no match");
                }

            }

            String[] keys = { KEY_NAME , KEY_TITLE };
            int[] ids = {android.R.id.text1 , android.R.id.text2};

            SimpleAdapter adapter = new SimpleAdapter(MyActivity.this , nameArrayList , android.R.layout.simple_list_item_2,
                    keys , ids);
            setListAdapter(adapter);



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

    }

}

满code位置:

full code here :

公共类MyActivity扩展ListActivity {

public class MyActivity extends ListActivity {

private JSONObject mNameDataJson;

private final String TAG = MyActivity.class.getSimpleName();

private final String KEY_NAME = "author";
private final String KEY_TITLE = "title";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);


    GetNameData getNameData = new GetNameData();
    getNameData.execute();


}

private void handleResponse() {

    if (mNameDataJson == null ) {
       // TODO: handle error
    } else {
        try {
            JSONArray namesArray = mNameDataJson.getJSONArray("posts");
            ArrayList<HashMap<String , String> > nameArrayList = new ArrayList<HashMap<String, String>>();

            for ( int i  = 0 ; i < namesArray.length() ; i++ ) {

                JSONObject unit = namesArray.getJSONObject(i);
                String name = unit.getString(KEY_NAME);
                name = Html.fromHtml(name).toString();
                String title = unit.getString(KEY_TITLE);
                title = Html.fromHtml(title).toString();

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

                if (name == "Guil Hernandez") {

                    hashMap.put(KEY_NAME, name);
                    hashMap.put(KEY_TITLE, title);

                    nameArrayList.add(hashMap);
                } else {
                    Log.v(TAG , "no match");
                }

            }

            String[] keys = { KEY_NAME , KEY_TITLE };
            int[] ids = {android.R.id.text1 , android.R.id.text2};

            SimpleAdapter adapter = new SimpleAdapter(MyActivity.this , nameArrayList , android.R.layout.simple_list_item_2,
                    keys , ids);
            setListAdapter(adapter);



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

    }

}


private class GetNameData extends AsyncTask<Object, Void, JSONObject> {
    JSONObject jsonResponse = null;

    @Override
    protected JSONObject doInBackground(Object... objects) {

        String nameUrl = "http://blog.teamtreehouse.com/api/get_recent_summary/?count=20";


        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(nameUrl)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {

            }

            @Override
            public void onResponse(Response response) throws IOException {
                String responseString = response.body().string();
                Log.v(TAG , responseString);

                try {
                    jsonResponse = new JSONObject(responseString);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        });

        return jsonResponse;
    }

    @Override
    protected void onPostExecute(JSONObject jsonObject) {

        mNameDataJson = jsonObject;
        handleResponse();


    }
}

}

推荐答案

如果要比较字符串使用等于()。像这样的:

If you want to compare strings use equals(). Like this:

if (name.equals("Guil Hernandez")) {

     hashMap.put(KEY_NAME, name);
     hashMap.put(KEY_TITLE, title);

     nameArrayList.add(hashMap);
}

这篇关于我简单的适配器惯于填充我的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆