2010-11-21 1 views
0

У меня небольшая проблема, и я не вижу ее.JSonarray для Arraylist и Arraylist в ListAdapter не работает. (В Android)

Я извлекаю данные Json (JSONArray), и я хотел сделать List всех имен в JSONArray, что-то вроде этого.

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

И я хотел взять этот список в `ListView», так что я сделал это:.

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 является одним из метода я создан, чтобы принимать данные JSON из API Eclipse, не видит ошибку, и мне тоже.

Может кто-нибудь помочь мне, пожалуйста?

+0

Что не работает? Какие сообщения об ошибках вы получаете? – Falmarri

+0

У меня нет ничего, что является проблемой, и когда я приветствую приложение для Android, он делает следующее: «приложение неожиданно останавливается». – Tsunaze

+0

@Tsunaue: для этого исключения должен быть выход logcat. –

ответ

0

Почему ваши методы имеют подчеркивания в именах? методы по соглашению беги n с строчной буквой. Например, myMethod(). Имена классов начинаются с прописных букв, таких как MyClass. Вы должны придерживаться этого.

Также history_share не является способом, которым вы разместили свой код, и вы не сможете извлечь что-либо из метода, вызвав его таким образом.

Метод геттера возвращает только определенный элемент. Я очень удивлен тем, что Eclipse не подчеркивает этого. Вы уверены, что проверка ошибок включена?

Обновление: Именование ваших классов, как уже существующих классов, как правило, очень плохая идея, и становится еще хуже, если вы планируете использовать исходный класс где-то или любой класс, производящий этот класс. В исходном Connection класс I не может указать любой статический член, называемый списком, который приводит к предположению, что вы создали свой собственный класс Connection. Это не должно быть проблемой здесь, но это может вызвать проблемы в будущем, если вы продолжите это делать.

+0

да, и у меня есть два класса: Main.java и Connection.java, я создал history_share следующим образом: Connection history_share = new Connection (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

Вы попробуете это с использованием ArrayList с Hashmap:

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

 Смежные вопросы

  • Нет связанных вопросов^_^