1

私は再び立ち往生しています..ここで、達成したいことに触れるたくさんの回答をスタックオーバーフローで読みましたが、問題を解決できませんでした。

私はListViews でこのチュートリアルを受講し、それを機能させました。ただし、私のアプリケーションでは、リストビューの各行にJSONオブジェクトを格納する非表示のパラメーターを持たせ、行がクリックされたときにプッシュしたい次のビューに渡すことができます。現時点で私のコードは次のようになっています(JSONをListで送信しようとして無駄になった後)

private class StableArrayAdapter extends ArrayAdapter<String> {

    HashMap<List, Integer> mIdMap = new HashMap<List, Integer>();

    public StableArrayAdapter(Context context, int textViewResourceId,
                              List<String> objects, JSONObject jsonToAdd) {
        super(context, textViewResourceId, objects);

     /*   for (int i = 0; i < objects.size(); ++i) {
            mIdMap.put(objects.get(i), i);
        } */
        JSONArray keyNames = null;
        keyNames = jsonToAdd.names();

        for (int i = 0; i < objects.size(); ++i) {
            JSONObject tempJSON =null;
            HashMap<String, String> tempHashMap = new HashMap<String, String>();
            List<String> tempList = new ArrayList<String>();
            try{
                tempJSON = jsonToAdd.getJSONObject(keyNames.get(i).toString());
            } catch (JSONException e){
                System.out.println("error");
            }
            tempHashMap.put(objects.get(i),tempJSON.toString());
            tempList.add(0, objects.get(i));
            tempList.add(1,tempJSON.toString());
            mIdMap.put(tempList, i);
        }
    }


    @Override
    public long getItemId(int position) {
        List<String> itemList = new ArrayList<String>();
        String item = getItem(position);

        return position;//mIdMap.get(item);
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

そして、これは私がそれを呼ぶ方法です

final StableArrayAdapter adapter = new StableArrayAdapter(this,
            android.R.layout.simple_list_item_1, listViewSource,forms);
    listview.setAdapter(adapter);




    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

            JSONObject forms = null;
            JSONObject jsonToPass = null;
            try {
                List<String> stuff = (List)parent.getItemAtPosition(position);
                forms = new JSONObject(stuff.get(1));
                jsonToPass = forms.getJSONObject(keyNames.get(position).toString());
            } catch (JSONException e) {
                e.printStackTrace();  
            }

           Intent anotherActivityIntent = new Intent(ShowListActivity.this, CollectionPointListActivity.class);
            anotherActivityIntent.putExtra("object",jsonToPass.toString());
            startActivity(anotherActivityIntent); 
        }
    });

明らかにこれはそれを行う方法ではありません。「onItemClick()」でアクセスできるように、メインクラスからデータオブジェクトを渡すにはどうすればよいですか? 私がやろうとしていることを達成するための最良の方法は何ですか?

よろしく、

ダニエル

4

2 に答える 2

1

行ビューのタグとして JSON を配置します。後でメソッド onItemClick(AdapterView parent, View view , int position, long id) から、JSON であるビュー パラメーターからタグを取得します。

于 2013-08-27T11:28:27.167 に答える