在列表视图中显示数据库项目
我的代码目前正在工作并显示数据库中的一个项目,但在联机查看后,我将数据放入适配器中,但它只显示数据库中的第一项。我应该更改哪些内容才能显示数据库的所有项目?在列表视图中显示数据库项目
MarksActivity.java
private void getData() {
String nume = editTextId.getText().toString().trim();
if (nume.equals("")) {
Toast.makeText(this, "Numele tau", Toast.LENGTH_LONG).show();
return;
}
loading = ProgressDialog.show(this,"Te rugam asteapta","Fetching...",false,false);
String url = Config.DATA_URL+editTextId.getText().toString().trim();
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MarksActivity.this, error.getMessage(),Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(String response){
String nota="";
String materie="";
String profesor = "";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
for(i=0;i<result.length();i++)
Log.v("Result--",""+result.getString(i));
JSONObject collegeData = result.getJSONObject(0);
nota = collegeData.getString(Config.KEY_NAME);
materie = collegeData.getString(Config.KEY_ADDRESS);
profesor = collegeData.getString(Config.KEY_VC);
} catch (JSONException e) {
e.printStackTrace();
}
String[] status = {"Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor};
textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this,
android.R.layout.simple_list_item_1, status));
}
的最后一个值只有一定表现。我建议你初始化上面的String [] Status循环,并在循环中添加每个状态的项。你会得到结果!
创建一个模型类为DemoObject的:
public class DemoObject {
private String nota;
public String getNota() {
return nota;
}
public void setNota(String nota) {
this.nota = nota;
}
}
现在,
private void showJSON(String response){
DemoObject demoObject = new DemoObject();
List<DemoObject> list = new ArrayList();
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
for(i=0;i<result.length();i++)
Log.v("Result--",""+result.getString(i));
JSONObject collegeData = result.getJSONObject(0);
demoObject.setNota(collegeData.getString(Config.KEY_NAME));
list.add(demoObject);
} catch (JSONException e) {
e.printStackTrace();
}
最后,
textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this,
android.R.layout.simple_list_item_1, list));
的问题是在showJson
方法 您需要初始化字符串数组开头,并在那里添加项目
private void showJSON(String response){
List<String> status = new ArrayList<String>(); // since you don't know exactly how many elements are there in the json array
String nota="";
String materie="";
String profesor = "";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
for(i=0;i<result.length();i++) {
Log.v("Result--",""+result.getString(i));
JSONObject collegeData = result.getJSONObject(i);
nota = collegeData.getString(Config.KEY_NAME);
materie = collegeData.getString(Config.KEY_ADDRESS);
profesor = collegeData.getString(Config.KEY_VC);
status.add("Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor);
}
} catch (JSONException e) {
e.printStackTrace();
}
textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this,
android.R.layout.simple_list_item_1, status));
}
我是否需要在我的xml中声明列表和ArrayList? –
没有它们在'java.util'包中提供,所以只需添加'import java.util.List;进口的java.util.ArrayList;'在文件的开头 –
仍然只显示来自DB –
按我的理解,你的showJSON方法应该是象下面这样:
private void showJSON(String response){
String nota="";
String materie="";
String profesor = "";
String[] status = null;
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
status = new String[result.length()];
for(i=0;i<result.length();i++) {
Log.v("Result--",""+result.getString(i));
JSONObject collegeData = result.getJSONObject(i);
nota = collegeData.getString(Config.KEY_NAME);
materie = collegeData.getString(Config.KEY_ADDRESS);
profesor = collegeData.getString(Config.KEY_VC);
status[i] = "Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor;
}
} catch (JSONException e) {
e.printStackTrace();
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MarksActivity.this,
android.R.layout.simple_list_item_1, android.R.id.text1, status);
textViewResult.setAdapter(adapter);
}
无法解析符号状态 –
仍然只显示第一项 –
此编辑答案应该起作用。我认为textViewResult是listview ..和其他定义ArrayAdapter
private void getData() {
String nume = editTextId.getText().toString().trim();
if (nume.equals("")) {
Toast.makeText(this, "Numele tau", Toast.LENGTH_LONG).show();
return;
}
loading = ProgressDialog.show(this,"Te rugam asteapta","Fetching...",false,false);
String url = Config.DATA_URL+editTextId.getText().toString().trim();
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MarksActivity.this, error.getMessage(),Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(String response){
List<String> status = new ArrayList<String>(); // since you don't know exactly how many elements are there in the json array
String nota="";
String materie="";
String profesor = "";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
for(i=0;i<result.length();i++) {
Log.v("Result--",""+result.getString(i));
JSONObject collegeData = result.getJSONObject(i);
nota = collegeData.getString(Config.KEY_NAME);
materie = collegeData.getString(Config.KEY_ADDRESS);
profesor = collegeData.getString(Config.KEY_VC);
status.add("Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor);
}
} catch (JSONException e) {
e.printStackTrace();
}
textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this,
android.R.layout.simple_list_item_1, status));
}
我究竟如何,可以将每个循环内? –
如果我在循环上面初始化String []状态,它将不起作用 –
编辑帖子! –