2016-08-02 11 views
0

まず、私はアンドロイドの初心者です。 今、私は学校のためのアプリケーションを構築しています。 この機能の1つでは、生徒のスケジュールを呼び出す機能があります。私はこの関数のチュートリアルを学んでいますが、それでも私が望むものは私に与えられません。 JSONArrayから値を解析し、ListViewに値を表示します。しかし、私には1つの正確なデータだけが与えられます。JSON配列を配列キーなしでAndroidで一覧表示する方法を完了するには

私はJSON配列から最初

JSON Array 

[{ 
"jam_start": "07:30:00", 
"jam_end": "08:05:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Seni Budaya Dan Keterampilan", 
"nama_guru": "Vina Rosiyanti,S.Pd" 
}, { 
"jam_start": "08:06:00", 
"jam_end": "08:40:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Bahasa Indonesia", 
"nama_guru": "Vina Rosiyanti,S.Pd" 
}, { 
"jam_start": "08:41:00", 
"jam_end": "09:15:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Bahasa Indonesia", 
"nama_guru": "Vina Rosiyanti,S.Pd" 
}, { 
"jam_start": "11:01:00", 
"jam_end": "11:35:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Komputer", 
"nama_guru": "Resi Gusta Arina,S.Pd.Gr" 
}, { 
"jam_start": "11:36:00", 
"jam_end": "12:10:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Komputer", 
"nama_guru": "Resi Gusta Arina,S.Pd.Gr" 
}, { 
"jam_start": "13:01:00", 
"jam_end": "13:35:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Ilmu Pengetahuan Alam", 
"nama_guru": "Vina Rosiyanti,S.Pd" 
}, { 
"jam_start": "13:36:00", 
"jam_end": "14:10:00", 
"kegiatan": "Belajar (KBM)", 
"mapel": "Ilmu Pengetahuan Alam", 
"nama_guru": "Vina Rosiyanti,S.Pd" 
}] 

を始めましょうそして、私は私のコード

MainActivity.java

 String schedule = response.toString(); 
     JSONArray array = new JSONArray(schedule); 
     String jamMulai = null; 
     String jamSelesai = null; 
     String kegiatan = null; 
     String mapel = null; 
     String namaGuru = null; 

     for (int i = 0; i < array.length(); i++) { 

      JSONObject arrayELement = array.getJSONObject(i); 
      mapel = arrayELement.getString("mapel"); 
      namaGuru = arrayELement.getString("nama_guru"); 
      kegiatan = arrayELement.getString("kegiatan"); 
      jamMulai = arrayELement.getString("jam_start"); 
      jamSelesai = arrayELement.getString("jam_end"); 

      HashMap<String, String> scheduleDetail = new HashMap<String, String>(); 
      scheduleDetail.put(mapel, mapel); 
      scheduleDetail.put(namaGuru, namaGuru); 
      scheduleDetail.put(kegiatan, kegiatan); 
      scheduleDetail.put(jamMulai, jamMulai); 
      scheduleDetail.put(jamSelesai, jamSelesai); 

      scheduleListDetail.add(scheduleDetail); 
      scheduleList = (ListView)findViewById(R.id.scheduleList); 

      ListAdapter listAdapter = new SimpleAdapter 
        (
          Schedule.this, scheduleListDetail, 
          R.layout.schedulie_list, new String[] 
          {mapel, namaGuru, kegiatan, jamMulai, jamSelesai}, 
          new int[]{R.id.txtNamaPelajaran, R.id.txtNamaGuru, R.id.txtKegiatan, R.id.txtJamMulai, R.id.txtJamSelesai} 
        ); 

      scheduleList.setAdapter(listAdapter); 

     } 

そして、この私が何を得る 誤った結果

を開始しますenter image description here

そして、私が最後にリスト表示のための ルックを望むものを、この

enter image description here

だから、これ ありがとう修正、および方法を、私を助けてください申し訳ありません私の英語のあまり良くない

ベスト場合敬具。

EDIT これは

Schedule Object 
public class ScheduleObject { 

private String MataPelajaran; 
private String NamaGuru; 
private String Kegiatan; 
private String JamMulai; 
private String JamSelesai; 

public String getMataPelajaran() { 
    return MataPelajaran; 
} 

public void setMataPelajaran(String mataPelajaran) { 
    MataPelajaran = mataPelajaran; 
} 

public String getNamaGuru() { 
    return NamaGuru; 
} 

public void setNamaGuru(String namaGuru) { 
    NamaGuru = namaGuru; 
} 

public String getKegiatan() { 
    return Kegiatan; 
} 

public void setKegiatan(String kegiatan) { 
    Kegiatan = kegiatan; 
} 

public String getJamMulai() { 
    return JamMulai; 
} 

public void setJamMulai(String jamMulai) { 
    JamMulai = jamMulai; 
} 

public String getJamSelesai() { 
    return JamSelesai; 
} 

public void setJamSelesai(String jamSelesai) { 
    JamSelesai = jamSelesai; 
} 

} 

マイObjectクラスであり、これはセットアダプタが後

ArrayList<ScheduleObject> allscheduleObjects=new ArrayList<ScheduleObject>(); 
for (int i = 0; i < array.length(); i++) { 
     JSONObject arrayELement = array.getJSONObject(i); 
     ScheduleObject sche_object=new ScheduleObject(); 


     sche_object.setMataPelajaran(arrayELement.getString("mapel")); 
     sche_object.setNamaGuru(arrayELement.getString("nama_guru")); 
     sche_object.setKegiatan(arrayELement.getString("kegiatan")); 
     sche_object.setJamMulai(arrayELement.getString("jam_start")); 
     sche_object.setJamSelesai(arrayELement.getString("jam_end")); 

     allscheduleObjects.add(sche_object); 


    } 
scheduleList = (ListView)findViewById(R.id.scheduleList); 

     ListAdapter listAdapter = new ScheduleAdapter 
       (
         Schedule.this, 
         R.layout.schedulie_list,allscheduleObjects 
       ); 

     scheduleList.setAdapter(listAdapter); 

・ホープ以下のようなループexicutionのために、これは解決します

enter code here 
public class ScheduleAdapter extends ArrayAdapter<ScheduleObject> { 

private final Context context; 
private ArrayList<ScheduleObject> scheduleObjects; 

public ScheduleAdapter(Context context, int textViewResourceId, ArrayList<ScheduleObject> scheduleObjects){ 
    super(context, textViewResourceId, scheduleObjects); 
    this.context = context; 
    this.scheduleObjects = new ArrayList<ScheduleObject>(); 
    this.scheduleObjects.addAll(scheduleObjects); 
} 

private class ViewHolder{ 
    TextView MataPelajaran; 
    TextView NamaGuru; 
    TextView Kegiatan; 
    TextView JamMulai; 
    TextView JamSelesai; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent){ 

    ViewHolder viewHolder = null; 

    if(convertView == null){ 

     LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.schedulie_list, null); 

     viewHolder = new ViewHolder(); 
     viewHolder.MataPelajaran = (TextView)convertView.findViewById(R.id.txtNamaPelajaran); 
     viewHolder.NamaGuru = (TextView)convertView.findViewById(R.id.txtNamaGuru); 
     viewHolder.Kegiatan = (TextView)convertView.findViewById(R.id.txtKegiatan); 
     viewHolder.JamMulai = (TextView)convertView.findViewById(R.id.txtJamMulai); 
     viewHolder.JamSelesai = (TextView)convertView.findViewById(R.id.txtJamSelesai); 
     convertView.setTag(viewHolder); 
    }else{ 
     viewHolder = (ViewHolder)convertView.getTag(); 
    } 

    ScheduleObject scheduleObject = scheduleObjects.get(position); 
    viewHolder.MataPelajaran.setText(scheduleObject.getMataPelajaran()); 
    viewHolder.NamaGuru.setText(scheduleObject.getNamaGuru()); 
    viewHolder.Kegiatan.setText(scheduleObject.getKegiatan()); 
    viewHolder.JamMulai.setText(scheduleObject.getJamMulai()); 
    viewHolder.JamSelesai.setText(scheduleObject.getJamSelesai()); 

    return convertView; 

} 

} 
+1

移動アダプターをforループから外す – Nilabja

+0

@Nilabjaアダプターはすでに移動していますが、まだ動作しません。 – BroJay

+0

http://www.androidhive.info/2012/01/android -json-parsing-tutorial/ これを参照してください。 – Nilabja

答えて

1

私のアダプタクラスでありますあなたの問題。アンドロイドスタジオで

+0

申し訳ありませんが、動作しません。まだ私に何が欲しいのか分からない。 – BroJay

+0

あなたはアダプタクラスを投稿することができます.. – Andolasoft

+0

私はすでに私の編集の質問を投稿しています、オブジェクトとアダプタクラスがあります – BroJay

0

compile 'com.fasterxml.jackson.core:jackson-databind:2.4.1.2' 
compile 'com.fasterxml.jackson.core:jackson-core:2.4.1.1' 
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.1' 

あなたはまた、あなたが変換しようとすると、この

public class SchoolDTO{ 
private String jam_start; 
private String jam_end; 
private String kegiatan; 
private String maple; 
private String nama_guru; 


... 

your getter setter method 

.... 

} 

のようになります。このためPOJOが必要になり、あなたのアプリのbuild.gradleにこの依存関係を追加文字列jsonはこれを単にリストするには

ArrayList<SchoolDTO> schoolDTOs = new ObjectMapper.readValue(response.toString(), new TypeReference<List<SchoolDTO>>(){}); 

リストをリストに渡します

+0

それらを削減することができます依存関係とちょうどGsonを使用して –

+0

@ cricket_007はい私たちもGsonを使用することができます –

+0

私はあなたの助けをしてくれてありがとう、私はそれを試して、 – BroJay

関連する問題