【问题标题】:How to retrieve value from ArrayList in android如何从android中的ArrayList中检索值
【发布时间】:2012-08-20 07:58:33
【问题描述】:

我正在尝试从 json api 检索值,然后在 listView 中显示。 listView 包含 3 个元素,我也在实现 onItemClickListner(),当单击一个项目时,它将显示与该项目相关的详细视图。我使用ArrayList 来存储所有json 值。现在我想从该ArrayList 中检索一个值,以便OnClickListner() 将获取该值并从该值中显示详细视图..

我正在使用 AsyncTask 来检索所有 json 值

@Override
protected String doInBackground(String... DATA) {
if(rqst_type.equals("top5"))
    {
        String url = DATA[1];
        JsonParser jParser = new JsonParser();
        JSONObject json = jParser.getJSONfromUrl(url);
        try
        {
            JSONArray top5 = json.getJSONArray(TAG_TOP5);
            public static ArrayList<HashMap<String, String>> top5List = new ArrayList<HashMap<String, String>>();
            top5List.clear();
            for(int i=0; i<top5.length(); i++)
            {
                Log.v(TAG_LOG, "Value of i: "+String.valueOf(i));
                JSONObject t = top5.getJSONObject(i);
                course_id = t.getString(TAG_CRSID);
                created_date = t.getString(TAG_CRTDATE);
                golfcourse_name = t.getString(TAG_GLFCRSNAME);
                facilities = t.getString(TAG_FCLTY);
                holes = t.getString(TAG_HOLES);

                HashMap<String, String> map = new HashMap<String, String>();
                map.put(TAG_CRSID, course_id);
                map.put(TAG_CRTDATE, created_date);
                map.put(TAG_GLFCRSNAME, golfcourse_name);
                map.put(TAG_FCLTY, facilities);
                map.put(TAG_HOLES, holes);

                top5List.add(map);
                Log.v(LoadingScreen.TAG_LOG, "top5List: "+String.valueOf(top5List));
            }
        }
        catch(JSONException e)
        {
            Log.v(TAG_LOG, String.valueOf(e));
        }
}

protected void onPostExecute(String result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    if(rqst_type.equals("top5"))
    {
        Intent in = new Intent(context, MyTop5.class);
        in.putExtra(TAG_CRSID, course_id);
        in.putExtra(TAG_CRTDATE, created_date);
        in.putExtra(TAG_GLFCRSNAME, golfcourse_name);
        in.putExtra(TAG_FCLTY, facilities);
        in.putExtra(TAG_HOLES, holes);
        Log.v(TAG_LOG, "Valuse to MyTop5: "+course_id+" "+created_date+" "+golfcourse_name+" "+
                facilities+" "+holes);
        context.startActivity(in);
    }

这是我显示列表和onItenClickListner()..的文件。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_top5);

    Intent in = getIntent();
    golfcourse_name = in.getStringExtra(TAG_GLFCRSNAME);
    course_id = in.getStringExtra(TAG_CRSID);
    created_date = in.getStringExtra(TAG_CRTDATE);
    facilities = in.getStringExtra(TAG_FCLTY);
    holes = in.getStringExtra(TAG_HOLES);
    Log.v(LoadingScreen.TAG_LOG, "course id: "+String.valueOf(course_id));
    ListAdapter adapter = new SimpleAdapter(this, LoadingScreen.top5List, R.layout.top5_list,
            new String[] { TAG_GLFCRSNAME, TAG_CRSID, TAG_CRTDATE, TAG_FCLTY, TAG_HOLES },
            new int[] { R.id.top_golfname, R.id.top_courseid, R.id.top_createdate, R.id.top_fclty, R.id.top_holes });

    setListAdapter(adapter);
    Log.v(LoadingScreen.TAG_LOG, "course id: "+String.valueOf(course_id));
    ListView lv = getListView();

    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            String url = "http://mygogolfteetime.com/iphone/viewdeal/127";
            new LoadingScreen(MyTop5.this).execute("view_detail", url);
        }
    });
}

在给定的 URL 中,我想将 127 更改为存储在 top5List 中的值。

String url = "http://mygogolfteetime.com/iphone/viewdeal/127";

我试图在top5List 中找到的值是“course_id”的值

提前谢谢..

【问题讨论】:

  • 您的代码令人困惑。您正在使用已解析的值开始新活动,然后再次使用该活动 onclick 侦听器中的另一个链接进行解析。这完全令人困惑。给出清晰的代码,很快你就会得到完美的答案。

标签: android json arraylist


【解决方案1】:
top5List.get(your position).get(your Key);

使用此代码,您可以找到要更改的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多