gpt4 book ai didi

android - 从数据库获取事件并放置在日历 View 上(android)

转载 作者:行者123 更新时间:2023-11-29 10:28:19 26 4
gpt4 key购买 nike

我的 Android 应用程序中有一个日历程序。现在我需要获取存储在在线 Mysql 数据库中的事件并将它们放在日历上。现在我有一个 php 文件,它创建一个 json 对象。这个 JSON 对象显示了来自数据库的所有事件

日历.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代码中,以便所有事件都将输入到数据库中而不是实际代码中。

enter image description here

我想通过使用 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"
}]

最佳答案

首先为 JSON 中包含的数据创建一个 POJO。

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();
}

然后您可以使用事件列表做任何您想做的事情。

关于android - 从数据库获取事件并放置在日历 View 上(android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47900308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com