2010-11-21 6 views
0

私は少し問題があり、私はそれを見ません。ListAdapterのJSonarrayからArraylistおよびArraylistは機能しません。 (Androidで)

私はJsonデータ(JSONArray)を取得しました。JSONArrayのすべての名前のうちListを作成したかったのです。

List list = new ArrayList<String>(); 
for(int i=0;i < data.length();i++){ 
    list.add(data.getJSONObject(i).getString("names").toString()); 
} 

と私はので、私はこれをしなかった `リストビュー」でこのリストを撮りたかった:

ArrayList<String> test = history_share.list; 
names_list = (String[]) test.toArray(); 
ArrayAdapter<String> adapter = new ArrayAdapter(this, 
    android.R.layout.simple_list_item_1, names_list); 
setListAdapter(adapter); 

(history_share iは、APIからJSONデータを取るために作成する方法の一つである のEclipse。どちらも任意のエラーが表示されていない、と私はありません。

誰かが私を助けてくださいことはできますか?

+0

機能していませんか?どのようなエラーメッセージが表示されますか? – Falmarri

+0

私は問題を何も持っていないし、私はアンドロイドアプリケーションをlauchときにそれを作る: "アプリケーションが突然停止している"事。 – Tsunaze

+0

@Tsunaue:この例外のためにlogcat出力がなければなりません。 –

答えて

0

なぜあなたの方法は、名前にアンダースコアを持っていますか?慣例begiによってメソッドnには小文字を使用します。たとえば、myMethod()です。クラス名は、MyClassのような大文字で始まります。あなたはそれに固執すべきです。

また、history_shareはコードを投稿した方法ではなく、その方法で呼び出してメソッドから何も取得できません。

getterメソッドは、定義されたメンバーを返します。私はEclipseがそれを強調していないことに非常に驚いています。エラーチェックが有効になっていますか?

更新:すでに既存のクラスのようなあなたのクラスに名前を付けることは、一般的に非常に悪いアイデアであり、あなたがどこかに元のクラスを使用することを計画したり、任意のクラスは、そのクラスを派生場合はそれも悪くなります。元のConnectionクラスでは、自分のConnectionクラスを作成したという前提につながるlistという静的メンバーを見つけることはできません。これはここで問題になる必要はありませんが、今後も問題が発生する可能性があります。

+0

はい、私は2つのクラスを持っています:Main.javaとConnection.java、私はhistory_shareを次のように作成しました:Connection history_share =新しい接続(URL)。 history_shareはオブジェクトです(誤った通信には申し訳ありません) – Tsunaze

+0

hmm yep私はConnectionクラスがあることを知らなかったが、他の機能では接続クラスが正常に機能しています。問題のリストだけです。 – Tsunaze

0
for(int i=0;i < data.length();i++){ 
    list.add(data.getJSONObject(i).getString("names").toString()); 
} 


.getString("names") returns String, remove .toString() 

また、

ArrayAdapter<String> adapter = new ArrayAdapter(this, 
    android.R.layout.simple_list_item_1, names_list); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, names_list); 
0

と交換してくださいあなたはHashmapArrayListを使用して、これを試してみてください。

ArrayList<HashMap<String, String>> comunitylist = new ArrayList<HashMap<String, String>>(); 

String url =_url + _uid + uid; 

JSONParstring jParser = new JSONParstring(); 

// getting JSON string from URL 
String json = jParser.getJSONFromUrl(url,apikey); 

Log.e("kPN", json); 
try 
{ 
    JSONObject jobj = new JSONObject(json); 
    Log.e("kPN", json.toString()); 
    System.out.print(json); 
    JSONArray comarray = jobj.getJSONArray(TAG_COMMU); 

    for(int i = 0; i <= comarray.length(); i++){ 
     JSONObject c = comarray.getJSONObject(i); 
     Log.w("obj", c.toString()); 
     JSONObject d = c.getJSONObject(TAG_PERSON); 
     Log.w("obj", d.toString()); 
     String name =d.getString(TAG_NAME); 
     Log.w("name", name); 

     String nick =d.getString(TAG_NICK); 
     String home = d.getString(TAG_HOME); 
     HashMap<String, String> map = new HashMap<String, String>(); 
     map.put(TAG_NAME, name); 
     map.put(TAG_NICK, nick); 
    } 
} 
catch (JSONException ie) 
{ 

} 

list=(ListView)findViewById(R.id.list); 
adapter=new Lazycommunity(this,listz); 

list.setAdapter(adapter); 

list.setOnItemClickListener(new OnItemClickListener() { 

    @SuppressWarnings("unchecked") 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 

     //Having Trouble with this line, how to retrieve value??? 
     HashMap<String, String> map2 = (HashMap<String, String>) list.getAdapter().getItem(position); 

     Intent in = new Intent(getApplicationContext(), Communityprofile.class); 
     in.putExtra(TAG_NAME, map2.get(TAG_NAME)); 
     in.putExtra(TAG_IMG, map2.get(TAG_IMG)); 

     startActivity(in); 
    } 
}); 
+0

あなたの答えに寄与しないので 'Log'呼び出しを削除するべきです。 – nalply

関連する問題