1

私は Android を初めて使用し、ListView配列を表示するためのアダプター モデルを持っています。

私はその値を次のように設定しました:

ListAdapter adapter = new SimpleAdapter(this, contactList,
                R.layout.bank_list,
                new String[] { TAG_NAME, TAG_central_office_address }, new int[] {
                        R.id.bank_name, R.id.central_office_address});

        setListAdapter(adapter);

        // selecting single ListView item
        ListView lv = getListView();


        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, android.view.View view,
                    int position, long id) {
                Intent in = new Intent(getApplicationContext(), BankExchangersListActivity.class);
                in.putExtra("Bank_id", TAG_ID);
                startActivity(in);
            }

        });

JSON から値を取得します。

url = "http://192.168.1.4:3000/banks.json";
        // Hashmap for ListView
        ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

        // Creating JSON Parser instance
        JSONParser jParser = new JSONParser();

        // getting JSON string from URL
        JSONObject json = jParser.getJSONFromUrl(url);

        try {
            // Getting Array of Contacts
            banks = json.getJSONArray(TAG_BANKS);

            // looping through All Contacts
            for(int i = 0; i < banks.length(); i++){
                JSONObject c = banks.getJSONObject(i);

                // Storing each json item in variable
                String id = c.getString(TAG_ID);
                String name = c.getString(TAG_NAME);
                String central_office_address = c.getString(TAG_central_office_address);
                // Phone number is agin JSON Object


                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                map.put(TAG_ID, id);
                map.put(TAG_NAME, name);
                map.put(TAG_central_office_address, name);


                // adding HashList to ArrayList
                contactList.add(map);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

JSON でわかるように、ID フィールドがありますが、設定していませんListView。次のクエリでは、ListView要素をクリックして他のアクティビティに移動しますがTAG_ID、この要素を取得する必要があります。多分私は何か間違ったことをしましたか?TAG_IDクリックした要素を表示せずに取得する方法はListView?

クリックされたアイテムの tag_id を送信するだけです!

4

2 に答える 2

1

これがお役に立てば幸いです。あなたはそれを取得PostionListSelectedItemId て渡しIntentSecondActivity今すぐ取得することができます ここでFirstActivity HashMapそれを定義して取得しますstatic

foreachloop を使用して、 like からすべての値を取得する HashMap ようになりました

public static void printMap(Map mp) {
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());            
    }
}

特定の位置でListSelectedItemIdcurrentList から値を取得できるようになりました

または好き

for (Map.Entry<String, Object> entry : map.entrySet()) {
    String key = entry.getKey();
    Object value = entry.getValue();
    // ...
}
于 2013-04-10T10:18:12.797 に答える
1

メソッドのpositionパラメーターはonItemClick、適応リスト内の選択されたアイテムのインデックスを提供します。そのため、元のアイテムの TAG_ID を見つけることができます

((Map<String, String>) adapter.getItem(position)).get(TAG_ID)

アダプターを final にして、リスナー内で参照できるようにします。

final ListAdapter adapter = ...
于 2013-04-10T10:12:57.670 に答える