0

我有一个简单的应用程序结构,它只是下载一些 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 发出新请求并显示元素的详细数据?

4

2 回答 2

3

而不是ArrayList使用HashMap. 在 HashMap 中,您可以存储键值对。因此,在您的情况下,您可以存储一个 id 和相应的数据

于 2013-05-22T02:09:19.737 回答
1

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

于 2013-05-22T02:10:43.870 回答