Android加载JSON并将数据传递给View

时间:2013-07-10 17:42:38

标签: android json

专家

我正在尝试将JSONData送到ListView

它的工作正常,但问题是我想将每行的json数据传递给下一个视图

这里是我的JSON课程

public class GetJSON extends AsyncTask<String, Void, ArrayList<JSONFields>> {

        @Override
        protected ArrayList<JSONFields> doInBackground(String... params) {
            // TODO Auto-generated method stub

            try {
                String url = params[0];
                HttpClient client = new DefaultHttpClient();
                HttpGet get = new HttpGet(url);
                HttpResponse response;
                response = client.execute(get);
                InputStream content = response.getEntity().getContent();
                BufferedReader reader;
                reader = new BufferedReader(new InputStreamReader(content));
                String line;
                String json = "";
                while ((line = reader.readLine()) != null) {
                    json += line;
                }

                JSONArray array = new JSONArray(json);
                ArrayList<JSONFields> alData = new ArrayList<JSONFields>();
                for (int i = 0; i < array.length(); i++) {


                    obj = array.getJSONObject(i);
                    data = new JSONFields();
                    data.setID(obj.getString("id"));
                    data.setTitle(obj.getString("title"));
                    data.setImage(obj.getString("image"));
                    data.setYoutube(obj.getString("youtube"));
                    data.setLength(obj.getString("length"));

                    alData.add(data);
                }
                System.out.println("Data returned sucessfully");
                return alData;

            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(ArrayList<JSONFields> result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);

            CustomAdapter adapter = new CustomAdapter(MainApp.this, result);

            listview.setAdapter(adapter);


        }
    }

我有用于保存JSON数据字段的创建类

这里是

公共类JSONFields {

private String id;
private String title;


public String getID() {
    return id;
}
public void setID(String id) {
    this.id = id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;

}

但是当我传递这段代码时

    String thetitle = data.getTitle();

    Intent showView = new Intent(MainApp.this, Show.class);

    showView.putExtra("title", thetitle);

    startActivity(showView);

我只获得最后一行信息..

这是我的问题

我想如果点击第5行,请参阅show view

中第5行的attr

我是Java和android的新手

我认为我应该将位置添加到getTitle(位置)

获得&lt;因为在iOS开发中,我将数组objectAtIndex:int的数据传递给NSDic

全部

但是这里&lt;我不知道

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用onItemClickListener来获取点击视图的位置, 而且您可以从列表中或从已设置为适配器的数组中获取相同的对象。