получать события из базы данных и размещения в режиме просмотра календаря (Android)

0

У меня есть программа календаря в приложении для Android. Теперь мне нужно получить события, хранящиеся в онлайн-базе данных Mysql и поместить их в календарь. Теперь у меня есть php файл, который создает объект json. И этот объект JSON показывает все события, поступающие из базы данных

Calendar.php

<?php
include 'DatabaseConfig.php';

// Create connection
//$conn = new mysqli($HostName, $HostUser, $HostPass, $DatabaseName);
    $conn = mysqli_connect("localhost", "id2553265_admin", "admin", "id2553265_mobile_app");
if ($conn->connect_error) {

 die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM calendar";

$result = $conn->query($sql);

if ($result->num_rows >0) {


 while($row[] = $result->fetch_assoc()) {

 $tem = $row;

 $json = json_encode($tem);


 }

} else {
 echo "No Results Found.";
}
 echo $json;
$conn->close();
?>

В этом коде я вставляю 1496134800000L, чтобы выделить дату 2017-05-30. И теперь у меня есть код Java, который выделяет и окрашивает их в синий цвет с определенной датой.

@Override

  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_calendar, container, false);
        //calendar setup
        compactCalendar = (CompactCalendarView) view.findViewById(R.id.comCalendarView);
        compactCalendar.setUseThreeLetterAbbreviation(true);
        calendarMonth = (TextView) view.findViewById(R.id.calMonth);



        Event may30 = new Event(Color.BLUE, **1496134800000L**, "test");
        compactCalendar.addEvent(may30);

        Event aug17 = new Event(Color.BLUE, 1502960400000L, "test");
        compactCalendar.addEvent(aug17);


        compactCalendar.setListener(new CompactCalendarView.CompactCalendarViewListener() {
            @Override
            public void onDayClick(Date dateClicked){
                if (dateFormatDay.format(dateClicked).toString().compareTo("**2017-05-30**") == 0){
                    Toast.makeText(CalendarFragment.this.getContext(), "There is an event", Toast.LENGTH_SHORT).show();
                    Intent i = new Intent(getActivity(), ListMay07.class);
                    i.putExtra("Date", "Sample date");
                    startActivity(i);

                }else  if (dateFormatDay.format(dateClicked).toString().compareTo("2017-08-17") == 0){
                    Toast.makeText(CalendarFragment.this.getContext(), "There is an event", Toast.LENGTH_SHORT).show();
                    Intent i = new Intent(getActivity(), ListAug17.class);
                    i.putExtra("Date", "Sample date");
                    startActivity(i);

                }else{
                    Toast.makeText(CalendarFragment.this.getContext(), "No Event", Toast.LENGTH_SHORT).show();

                }
            }

            @Override
            public void onMonthScroll(Date firstDayOfNewMonth) {
                calendarMonth.setText(dateFormatMonth.format(firstDayOfNewMonth));
            }



        });
        // Inflate the layout for this fragment
        return view;

    }

Моя основная проблема заключается в том, как получить данные из базы данных и вставить их в свой Java-код, чтобы все события были введены в базу данных не в фактическом коде.

Изображение 174551

Я хочу сделать это с помощью объекта JSON но я не знаю, как это сделать.

[{  
   "ID":"1",
   "Epoch_Time":"1496134800000L",
   "Date":"2017-05-30"   ‌​,
   "Description":"Cama‌​raderie Day"
},
{  
   "ID":"2",
   "Epoch_Time":"1502960400000L",
   "Date":"2017-0‌​8-17",
   "Description":‌​"Sample Date"
}]
Теги:
calendar

1 ответ

1
Лучший ответ

Сначала создайте POJO для данных, содержащихся в JSON.

public class Event{
   long id;
   long epochTime;
   String date;
   String  desc;

  public Event (long id, long epochTime, String date, String  desc){
      this.id = id;
      this.epochTime = epochTime;
      this.date = date;
      this.desc = desc;
  }
}

Затем вы можете разобрать JSON и сохранить его в POJO

String myJsonResponse // will contain the json response from the server

try {
    JSONArray array = new JSONArray(myJsonResponse);

    List<Event> events = new ArrayList<>(array.length());

    for (int i = 0; i < array.length(); i++) {
        JSONObject object = (JSONObject) array.get(1);
        long id = Long.parseLong(object.getString("ID"));
        long epoctTime = Long.parseLong(object.getString("Epoch_Time"));
        String date = object.getString("Date");
        String description = object.getString("Description");

        Event event = new Event(id, epoctTime, date, description);
        events.add(event);

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

Затем вы можете использовать список событий, чтобы делать все, что хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню