大家好,我现在已经搜索了错误或如何正确操作一段时间,是的,我认为这里的很多问题都帮助我更接近。
但是我有一个API,我在其中获得了JSONArray,我想在列表视图中显示这些数据。到目前为止,我在日志中获取了数据,现在我只是尝试显示每个对象的名称(然后我可以稍后添加其余数据(,但我不确定我是否在正确的位置,也许有人可以帮助我在这里并显示我做错了什么?
多谢
列表视图名称:全鸟
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mAuth = FirebaseAuth.getInstance();
String URL="myAPI";
RequestQueue requestQueue= Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response",response.toString());
try{
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
Log.d("NameDanish", NameDanish);
}
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response",error.toString());
}
});
requestQueue.add(objectRequest);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, NameDanish);
ListView list = (ListView) findViewById(R.id.AllBirds);
list.setAdapter(adapter);
}
在类中创建 ArrayList
ArrayListarrayList = new ArrayList<>((;
更改上面的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mAuth = FirebaseAuth.getInstance();
String URL = "myAPI";
RequestQueue requestQueue = Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest(Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response", response.toString());
try {
for (int i = 0; i < response.length(); i++) {
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
arrayList.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response", error.toString());
}
});
requestQueue.add(objectRequest);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, arrayList);
ListView list = (ListView) findViewById(R.id.AllBirds);
list.setAdapter(adapter);
}
像这样全局创建一个字符串数组列表
ArrayList<String> name_array=new ArrayList<>();
然后添加
try{
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
name_array.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
然后将此数组列表传递给您的适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, name_array);
创建列表视图、适配器、数组作为成员变量,并使用 notifyDataUpdate from responseHandler 更新数据。
ListView mList;
ArrayAdapter<String> mAdapter
ArrayList<String> mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mData=new ArrayList<>();
mList = (ListView) findViewById(R.id.AllBirds);
mAdapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, mData);
list.setAdapter(adapter);
mAuth = FirebaseAuth.getInstance();
String URL="myAPI";
RequestQueue requestQueue= Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response",response.toString());
try{
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
mData.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
mAdapter.notifyDataSetChanged();
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response",error.toString());
}
});
requestQueue.add(objectRequest);
}
正如 Toyj 所说,我现在已经将代码更改为此代码,我已经发布了我的 xml。
我没有得到任何数据,只有所有的名字都显示在日志中?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mAuth = FirebaseAuth.getInstance();
final ArrayList arrayList = new ArrayList<>()
String URL="MYAPI";
RequestQueue requestQueue= Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response",response.toString());
try{
//JSONArray jsonArray = new JSONArray(response);
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
arrayList.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response",error.toString());
}
});
requestQueue.add(objectRequest);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, arrayList);
ListView list = (ListView) findViewById(R.id.AllBirds);
list.setAdapter(adapter);
}
JSON 数据看起来像这样,我只是以 NameDanish 开始
{
"BirdId": 1,
"Comment": null,
"Created": "/Date(1523836800000+0000)/",
"Id": 132,
"Latitude": 55.6886037,
"Longitude": 12.5310135,
"Placename": "K",
"Population": 0,
"UserId": "user1",
"NameDanish": "solsort",
"NameEnglish": "blackbird"
}
XML 文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="net.simplifiedlearning.firebaseauth.all_observationActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/AllBirds">
</ListView>
</LinearLayout>