0

나는 여기에서 문제가있어, 나는 이것에 완전히 새로운 것이다.안드로이드 JSONObject to ListView

내가 뭘하려고하는 것은이 내 코드입니다 ListView에

에 대한 모든 행을 만들어 내 어댑터에 내 어댑터 내부 된 JSONObject를 전달할 수 있습니다 :

private static final String TAG_OS = "android"; 

    protected void onPostExecute(JSONObject json) { 

     try { 

      JSONArray jArray = json.getJSONArray(TAG_OS); 
      if (jArray != null) { 
       for (int i=0;i<jArray.length();i++){ 
        listdata.add(jArray.get(i).toString()); 
       } 
      } 

      menu_list=(ListView)findViewById(R.id.menu_list); 

       MenuAdapter adapter = new MenuAdapter(MainActivity.this, new ArrayList[] {listdata}); 
       menu_list.setAdapter(adapter); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 


    } 

내 어댑터이 하나입니다

public class MenuAdapter extends ArrayAdapter<ArrayList> { 
    private final Context context; 
    private final ArrayList[] values; 
public MenuAdapter(Context context,ArrayList[] values) { 
    super(context, R.layout.menu_main, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.menu_main, parent, false); 

    if (position % 2 == 1) { 
     rowView.setBackgroundColor(Color.RED); 
    } else { 
     rowView.setBackgroundColor(Color.BLUE); 
    } 

    return rowView; 
} 

대체 ListView를 채우는 방법은 아직 모르지만 대체 배경이있는 TextView 하나뿐입니다. 내가 아직 이해하지 못하는 것은 하나의 행을 세우는 방법이며, 좋은 예를 발견하지 못했다.

어떻게 해결할 수 있습니까? :

답변

0

코드에 하나의 텍스트 필드 만 사용하기 때문에 Android 용 ArrayAdapter을 사용할 수 있으므로 맞춤형 어댑터를 만들 필요가 없습니다.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, listdata.toArray()); 

menu_list.setAdapter(adapter); 

이 스 니펫은 기본 Android 목록 레이아웃과 여러 행 추가를 처리하는 TextView를 사용합니다.

편집 : 당신이 BaseAdapter를 확장하는 클래스를 확인하고 ViewHolder를 사용 나는 androidadapternotifiydatasetchanged.blogspot.in을 쓴이 블로그에서 볼 필요가 그것에 대해 BaseAdapter를 사용하는 데 사용할 필요가 마치 , 그것은 클래스를 가지고있는 BaseAdapter를 확장하고 사용자 정의 레이아웃 (.xml) 파일을 사용하면 어떻게 수행되는지에 대한 기본적인 아이디어를 얻을 수 있습니다.

+0

지금은 네, 단 하나의 텍스트 뷰이지만 다른 배경색을 설정해야합니다. 다른 행의 이미지와 버튼 같은 다른 요소들 – Nathre

+0

BaseAdapter를 확장하고 ViewHolder를 사용하는 클래스를 만들려면 http://androidadapternotifiydatasetchanged.blogspot.in/을 쓴이 블로그를 살펴보십시오. BaseAdapter를 확장하고 사용자 정의 레이아웃 (.xml) 파일을 사용하는 클래스를 사용하면 어떻게 수행되는지에 대한 기본적인 아이디어를 얻을 수 있습니다. –

+0

Arif, 고맙습니다. D – Nathre