0

これは、json配列からデータを接続してプルすることです。2つのリストビューアイテムを追加しましたが、テキストは表示されていませんか?

JSON配列{"tournaments":[{"Title": "my title"、 "Contact": "my contact"、 "Description": "my description"、 "City": "my city"、 "State": " Kansas "、" Category ":" Roulette "}、{" Title ":" my title "、" Contact ":" my contact "、" Description ":" my description "、" City ":" my city "、" State ":" Connecticut "、" Category ":" Three Card Poker "}]}

そして、Javaの私のコードのいくつか...

    JSONObject json = JSONfunctions.getJSONfromURL("http://kleinefrosch.com/retrieve.php");

    try{

        JSONArray  tourneys = json.getJSONArray("tournaments");

        for(int i=0;i<tourneys.length();i++){                       
            HashMap<String, String> map = new HashMap<String, String>();    
            JSONObject e = tourneys.getJSONObject(i);

            map.put("id",  String.valueOf(i));
            map.put("Title:" , e.getString("Title"));
            map.put("Contact:" , e.getString("Contact"));
            map.put("Description:" , e.getString("Description"));
            map.put("City:" , e.getString("City"));
            map.put("State:" , e.getString("State"));
            map.put("Country:" , e.getString("Country"));
            map.put("Category:" , e.getString("Category"));

            mylist.add(map);            
        }       
    }catch(JSONException e)        {
         Log.e("log_tag", "Error parsing data "+e.toString());
    }

    ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main, 
                    new String[] { "Title","Contact","Description","City","State","Country","Category" }, 
                    new int[] { R.id.item_title, R.id.item_subtitle });

    setListAdapter(adapter);

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);  
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            @SuppressWarnings("unchecked")
            HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);                   
            Toast.makeText(JsonActivity.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); 

        }
    });
}

}

4

3 に答える 3

1

JSON文字列の解析が例外なく完了していると仮定すると、次の構造を使用する必要があると思います。

setListAdapter(new ArrayAdapter<String>(Context context, int resource, int textViewResourceId, List<T> objects);

詳細については、開発者ガイドにアクセスしてください

于 2012-05-23T06:28:57.930 に答える
1

削除してみてくださいmap.put("id", String.valueOf(i));

それが実行されることを願っています。

編集済み

あなたの間違いはここにあります

map.put("Title:" , e.getString("Title")); 

そのはず

map.put("Title" , e.getString("Title"));

SimpleAdapterで照合されるのはキーです。:このように、各文字列値から削除します。

したがって、両方のキーが完全に一致していることを確認してください。

于 2012-05-23T06:33:29.517 に答える
0

Xmlコードを投稿します。カスタマイズされたリストビューを使用していますか?それが意味する場合は、Textviewに暗い色を追加します。

于 2012-05-23T06:24:46.137 に答える