2013-05-22 73 views
0

我的应用程序,只是下载一些MySQL数据并显示给一个列表视图的简单结构。代码片段显示了我在做什么。如何将ID添加到一个ArrayList

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创建一个新的请求并显示元素的详细数据?

回答

1

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

3

而不是ArrayList使用HashMap。在HashMap中,您可以存储一个键值对。所以你的情况,你可以存储一个ID,它的数据相应

+0

非常感谢您的回答。我已经使用哈希映射,但是我在显示数据时遇到了问题。你能告诉我的代码片段或与教程链接? – PAcan

+0

@PAcan有很多教程在那里..尝试一个..发布你的代码与你试过..然后我可以帮你 – stinepike

相关问题