Java 使用recyclerview和ListItem在android studio中创建表
我想使用ListItem和RecylerView在android中创建一个表。我已经使用API创建了它,但它没有显示任何数据。这是我的密码 kehadiran.xmlJava 使用recyclerview和ListItem在android studio中创建表,java,php,android,xml,android-recyclerview,Java,Php,Android,Xml,Android Recyclerview,我想使用ListItem和RecylerView在android中创建一个表。我已经使用API创建了它,但它没有显示任何数据。这是我的密码 kehadiran.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".kehadiran">
<RelativeLayout
android:id="@+id/llViewTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true">
<TextView
android:id="@+id/kehadiran"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32dp"
android:textColor="@color/colorPrimaryDark"
android:layout_centerHorizontal="true"
android:layout_marginTop="32dp"
android:layout_centerInParent="true"
android:text = "Kehadiran"
/>
</RelativeLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/llViewTitle"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewDeliveryProductList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:listitem="@layout/table_list_item" />
</HorizontalScrollView>
</RelativeLayout>
kehadiran.java
package com.example.eis2;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.eis2.Item.TableViewAdapter;
import com.example.eis2.Item.keteranganmodel;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import static com.example.eis2.Item.LoginItem.ABSENSI_URL;
public class kehadiran extends AppCompatActivity {
private List<keteranganmodel> absensi;
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kehadiran);
RecyclerView recyclerView = findViewById(R.id.recyclerViewDeliveryProductList);
TableViewAdapter adapter = new TableViewAdapter(getKehadiranlist(), getApplicationContext());
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(adapter);
absensi = new ArrayList<>();
}
private List getKehadiranlist() {
StringRequest stringRequest = new StringRequest(Request.Method.GET, ABSENSI_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray keteranganArray = obj.getJSONArray("data");
for (int i = 0; i < keteranganArray.length(); i++) {
JSONObject keteranganobject = keteranganArray.getJSONObject(i);
keteranganmodel keterangan = new keteranganmodel(
keteranganobject.getString("shift_day"),
keteranganobject.getString("f1"),
keteranganobject.getString("depo_f1"),
keteranganobject.getString("waktu_masuk"),
keteranganobject.getString("f4"),
keteranganobject.getString("depo_f4"),
keteranganobject.getString("waktu_keluar"),
keteranganobject.getString("ket_absensi"));
absensi.add(keterangan);
System.out.println("data:" + keterangan);
}
TableViewAdapter adapter = new TableViewAdapter(absensi, getApplicationContext());
list.setAdapter((ListAdapter) adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
return absensi;
}
}
这是它的API
<?php
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$send = curl("http://hrd.tvip.co.id/rest_server/api/absensi/index?shift_day=2020-08-24&shift_day_2=2020-08-27&badgenumber=0100028400");
// mengubah JSON menjadi array
$data = json_decode($send, TRUE);
echo "<pre>";
print_r($data);
echo "</pre>";
?>
我每次都试过,但总是空白或没有显示数据
主要问题是
$data = json_decode($send, TRUE);
echo $data;
2020-08-31 10:18:16.245 11130-11130/com.example.eis2 W/System.err:org.json.JSONException:java.lang.String类型的值数组无法转换为JSONObject
根据您正在执行的php代码echo
package com.example.eis2.Item;
public class keteranganmodel {
private String shift_day;
private String f1;
private String depo_f1;
private String waktu_masuk;
private String f4;
private String depo_f4;
private String waktu_keluar;
private String ket_absensi;
public keteranganmodel(String shift_day, String f1, String depo_f1, String waktu_masuk, String f4, String depo_f4, String waktu_keluar, String ket_absensi) {
this.shift_day = shift_day;
this.f1 = f1;
this.depo_f1 = depo_f1;
this.waktu_masuk = waktu_masuk;
this.f4 = f4;
this.depo_f4 = depo_f4;
this.waktu_keluar = waktu_keluar;
this.ket_absensi = ket_absensi;
}
public String getShift_day() {
return shift_day;
}
public void setShift_day(String shift_day) { this.shift_day = shift_day; }
public String getF1() {
return f1;
}
public void setF1(String f1) {
this.f1 = f1;
}
public String getDepo_f1() {
return depo_f1;
}
public void setDepo_f1(String depo_f1) {
this.depo_f1 = depo_f1;
}
public String getWaktu_masuk() {return waktu_masuk;}
public void setWaktu_masuk(String waktu_masuk) {this.waktu_masuk = waktu_masuk; }
public String getF4() {
return f4;
}
public void setF4(String f4) {
this.f4 = f4;
}
public String getDepo_f4() {
return depo_f4;
}
public void setDepo_f4(String depo_f4) {
this.depo_f4 = depo_f4;
}
public String getWaktu_keluar() {
return waktu_keluar;
}
public void setKet_absensi(String waktu_keluar) {
this.waktu_keluar = waktu_keluar;
}
public String getKet_absensi() {
return ket_absensi;
}
public void setWaktu_keluar(String ket_absensi) {
this.ket_absensi = ket_absensi;
}
}
<?php
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$send = curl("http://hrd.tvip.co.id/rest_server/api/absensi/index?shift_day=2020-08-24&shift_day_2=2020-08-27&badgenumber=0100028400");
// mengubah JSON menjadi array
$data = json_decode($send, TRUE);
echo "<pre>";
print_r($data);
echo "</pre>";
?>
2020-08-31 10:18:16.245 11130-11130/com.example.eis2 W/System.err: org.json.JSONException: Value <pre>Array of type java.lang.String cannot be converted to JSONObject
$data = json_decode($send, TRUE);
echo $data;