У меня проблема с моим кодом. Я уже создал счетчик, который заполняет базу данных MySQL. Код PHP, похоже, вообще не имеет проблем, так как я запускаю ссылку "localhost / latihan1 / menu / php", будет отображаться строка json.
json отображается следующим образом:
{"result": [{"username": "haha", "name": "Bus Bisnis", "course": "math", "session": "20119"}, {"username ":" hihi "," name ":" Bus Ace "," course ":" fizik "," session ":" 12817 "}, {" username ":" m_ridwan "," name ":" Ridwan "," Конечно ":" Komputer», "сессия": "1920"}, { "имя пользователя": "m_iqbal", "имя": "Икбал", "конечно": "Сайнс", "сессия": "2021"}] }
Но когда я открываю приложения, Spinner не показывает данные. Я не знаю почему. Ниже приведен мой код
JAVA
publi c Класс MainActivity расширяет AppCompatActivity реализует Spinner.OnItemSelectedListener {
private Spinner spinner;
private ArrayList<String> students;
//JSON Array
private JSONArray result;
private TextView textViewName;
private TextView textViewCourse;
private TextView textViewSession;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Initializing the ArrayList
students = new ArrayList<String>();
spinner = findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);
textViewName = findViewById(R.id.textViewName);
textViewCourse = findViewById(R.id.textViewCourse);
textViewSession = findViewById(R.id.textViewSession);
getData();
}
private void getData(){
StringRequest stringRequest = new StringRequest(Config.DATA_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject j = null;
try {
j = new JSONObject(response);
result = j.getJSONArray(Config.JSON_ARRAY);
getStudents(result);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void getStudents(JSONArray j){
for(int i=0;i<j.length();i++){
try {
JSONObject json = j.getJSONObject(i);
students.add(json.getString(Config.TAG_USERNAME));
} catch (JSONException e) {
e.printStackTrace();
}
}
spinner.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, students));
}
private String getName(int position){
String name="";
try {
JSONObject json = result.getJSONObject(position);
name = json.getString(Config.TAG_NAME);
} catch (JSONException e) {
e.printStackTrace();
}
return name;
}
private String getCourse(int position){
String course="";
try {
JSONObject json = result.getJSONObject(position);
course = json.getString(Config.TAG_COURSE);
} catch (JSONException e) {
e.printStackTrace();
}
return course;
}
private String getSession(int position){
String session="";
try {
JSONObject json = result.getJSONObject(position);
session = json.getString(Config.TAG_SESSION);
} catch (JSONException e) {
e.printStackTrace();
}
return session;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//Setting the values to textviews for a selected item
textViewName.setText(getName(position));
textViewCourse.setText(getCourse(position));
textViewSession.setText(getSession(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
textViewName.setText("");
textViewCourse.setText("");
textViewSession.setText("");
}
}
меню. php
<?php
require_once "koneksi.php";
$query = mysqli_query($con, "SELECT * FROM kendaraan ORDER BY id ASC");
$students = array();
while($row = mysqli_fetch_array($query)){
array_push($students,array(
'username'=>$row['username'],
'name'=>$row['name'],
'course'=>$row['course'],
'session'=>$row['session']
));
}
echo json_encode(array('result'=>$students));
mysqli_close($con);
?>