如何将id添加到arraylist

时间:2013-05-22 02:05:28

标签: android json

我有一个简单的应用程序结构,只需下载一些mysql数据并将其显示到列表视图中。代码片段显示了我正在做的事情。

public class MyActivity extends Activity implements AdapterView.OnItemClickListener {
    private static final String TAG = "centrActivity";

    ListView listView;
    ArrayList<String> randomCentr;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        parseJson();

        ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, randomTorgCentr);
        listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_NONE);
        listView.setOnItemClickListener(this);
    }

    private ArrayList<String> parseJson() {
        randomCentr = new ArrayList<String>();

        JSONArray centr = null;

        //url
        String url = "";

        JSONParser jsonParser = new JSONParser();

        JSONObject jsonObject = jsonParser.getJSONFromUrl(url);
        Log.i(TAG, jsonObject.toString());
        try {
            torgCentr = jsonObject.getJSONArray("callback");
            Log.i(TAG, torgCentr.toString());
            for (int i=0; i<torgCentr.length(); i++) {
                JSONObject o = torgCentr.getJSONObject(i);
                String id = o.getString("id");
                String name = o.getString("name");
                randomCentr.add(i, name);
                Log.i(TAG, randomTorgCentr.get(i));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return randomTorgCentr;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Log.i(TAG, randomCentr.get(position));
    }
}

一切都在显示,但我遇到了问题。我有通过id连接到这个表的表。我在列表中只有表的名称属性。那么,如何从json文件中为每个元素指定它的id,所以我可以根据元素的id创建一个新的请求并显示元素的详细数据?

2 个答案:

答案 0 :(得分:3)

而不是ArrayList使用HashMap。在HashMap中,您可以存储键值对。因此,在您的情况下,您可以相应地存储ID及其数据

答案 1 :(得分:1)

我建议您为数据创建一个模型并扩展BaseAdapter并创建映射到它的模型集合。另一种选择是创建一个简单的Map并将索引作为键,将id作为值。但我建议你选择第一个选项。