как правильно парсить такой json. надо получить следующие данные и выводить в recycleview
(
timeStart
timeEnd
type
adress
title
room
id
fullname)
{
"count": 1,
"days": [
{
"num": "5",
"count": 2,
"date": "2017-11-10",
"lessons": [
{
"timeStart": "18:45",
"timeEnd": "20:05",
"teacher": {
"id": "35020",
"fullname": "Лявшук Ирена Александровна",
"post": "Старший преподаватель"
},
"type": "лаб.",
"title": "Информатика",
"address": "Врублевского, 33",
"room": "313",
"subgroup": {
"id": "7480",
"title": "СВС-ТЭЭО-171.3.1"
}
},
{
"timeStart": "20:10",
"timeEnd": "21:30",
"teacher": {
"id": "35020",
"fullname": "Лявшук Ирена Александровна",
"post": "Старший преподаватель"
},
"type": "лаб.",
"title": "Информатика",
"address": "Врублевского, 33",
"room": "313",
"subgroup": {
"id": "7480",
"title": "СВС-ТЭЭО-171.3.1"
}
}
]
}
]
}
вот код, который уже есть
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Lessons> listItems;
private Context context;
public MyAdapter(List<Lessons> listItems, Context context) {
this.listItems = this.listItems;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.activity_list_item,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView startTextView;
public TextView endTextView;
public TextView nameLessonTextView;
public TextView nameTeacherTextView;
public TextView adressTextView;
public TextView numberClassTextView;
public TextView typeLessonTextView;
public ViewHolder(View itemView) {
super(itemView);
startTextView = itemView.findViewById(R.id.start_time_text_view);
endTextView = itemView.findViewById(R.id.end_time_text_view);
nameLessonTextView = itemView.findViewById(R.id.name_lesson_text_view);
nameTeacherTextView = itemView.findViewById(R.id.name_teacher_text_view);
adressTextView = itemView.findViewById(R.id.adress_text_view);
numberClassTextView = itemView.findViewById(R.id.number_class_text_view);
typeLessonTextView = itemView.findViewById(R.id.type_lesson_text_view);
}
}
}
public class Teacher {
int id;
String fullname;
public Teacher(int id, String fullname) {
this.id = id;
this.fullname = fullname;
}
public int getId() {
return id;
}
public String getFullname() {
return fullname;
}
}
public class Lessons extends ArrayList<Lessons> {
String timeStart;
String timeEnd;
String type;
String adress;
String title;
String room;
ArrayList<Teacher> teachers;
public Lessons(String timeStart, String timeEnd, String type, String adress, String title, String room) {
this.timeStart = timeStart;
this.timeEnd = timeEnd;
this.type = type;
this.adress = adress;
this.title = title;
this.room = room;
}
public String getTimeStart() {
return timeStart;
}
public String getTimeEnd() {
return timeEnd;
}
public String getType() {
return type;
}
public String getAdress() {
return adress;
}
public String getTitle() {
return title;
}
public String getRoom() {
return room;
}
}
основная activity
public class RecyclerActivity extends AppCompatActivity {
private final String URL = "http://api.grsu.by/1.x/app1/getGroupSchedule?studentId=141997&dateStart=10.11.2017&dateEnd=10.11.2017";
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private List<Lessons> listItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler);
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
listItems = new ArrayList<>();
loadData(URL);
}
private void loadData(String response){
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("days");
String s = jsonArray.toString();
JSONObject js = new JSONObject(s);
JSONArray ja = js.getJSONArray("lessons");
for(int i = 0; i<ja.length();i++){
JSONObject jo = ja.getJSONObject(i);
/*Lessons lessons = new Lessons(
jo.getString("timeStart"),
jo.getString("timeEnd"),
jo.getString("type"),
jo.getString("adress"),
jo.getString("title"),
jo.getString("room"),
jo.getString("")
);*/
listItems.add(lessons);
}
adapter = new MyAdapter(listItems, getApplicationContext());
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
Делать запросы к сети в Активити это очень плохая практика. Для начала почитай те про такие библиотеки как Retrofit2,Gson они помогут делать запросы в сеть и преобразовать json в объект. Далее почитай те про MVP это очень удобно если понимать. По факту вам должен приходить уже готовый объект с класса который занимается работой с сетью в активити там вы передаете этот объект в адаптер и там уже делаете в методе onBindViewHolder
holder.nameLessonTextView.setText(listItems.get(holder.getAdapterPosition).getTitle);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь отправить push-уведомления на устройства AppleИспользую библиотеку:
Недавно начал изучать CoordinatorLayout и решил написать свой Behavior
Мне нужно указать в buildgradle чтобы он считал главный класс - с методом main был допустим hello