我正在尝试使用recyclerView显示数据库中的项目列表。但是,即使代码运行良好,没有任何错误,recyclerView也不会显示任何内容。可能的原因是什么?如果有人能帮助我。
我的代码如下:
请求适配器.java
package com.bloodconnect.Fragments;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bloodconnect.Model.Request;
import com.bloodconnect.R;
import java.util.List;
public class RequestsAdapter extends RecyclerView.Adapter<RequestsAdapter.RequestsViewHolder>{
private Context mCtx;
private List<Request> requestList;
public RequestsAdapter(Context mCtx, List<Request> requestList) {
this.mCtx = mCtx;
this.requestList = requestList;
}
@Override
public RequestsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.show_request_template, null);
return new RequestsViewHolder(view);
}
@Override
public void onBindViewHolder(RequestsViewHolder holder, int position) {
Request requests = requestList.get(position);
holder.request_name.setText(requests.getName());
holder.request_blood_group.setText(requests.getBlood_group());
holder.request_date.setText(String.valueOf(requests.getDate_of_request()));
holder.request_address.setText(String.valueOf(requests.getAddress()));
holder.request_lat_lng.setText(String.valueOf(requests.getLat_lng()));
}
@Override
public int getItemCount() {
return requestList.size();
}
class RequestsViewHolder extends RecyclerView.ViewHolder {
TextView request_name, request_address, request_date, request_lat_lng, request_blood_group;
public RequestsViewHolder(View itemView) {
super(itemView);
request_name = itemView.findViewById(R.id.show_request_name);
request_blood_group = itemView.findViewById(R.id.show_request_bloodgroup);
request_date = itemView.findViewById(R.id.show_request_date);
request_address = itemView.findViewById(R.id.show_request_address);
request_lat_lng = itemView.findViewById(R.id.show_request_location);
}
}
}
package com.bloodconnect.Fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.bloodconnect.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class ShowRequestsFragment extends Fragment {
private static final String URL_REQUESTS = "http://142.93.216.24/android/api.php?apicall=get_requests";
List<com.bloodconnect.Model.Request> requestsList;
RecyclerView recyclerView;
public ShowRequestsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_show_requests, container, false);
recyclerView = rootView.findViewById(R.id.listRecyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
requestsList = new ArrayList<>();
loadRequests();
RequestsAdapter adapter;
adapter = new RequestsAdapter(getActivity(), requestsList);
recyclerView.setAdapter(adapter);
return rootView;
}
private void loadRequests() {
StringRequest stringRequest = new StringRequest(com.android.volley.Request.Method.GET, URL_REQUESTS,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray array = new JSONArray();
for (int i = 0; i < array.length(); i++) {
JSONObject request = array.getJSONObject(i);
requestsList.add(new com.bloodconnect.Model.Request(
request.getString("name"),
request.getString("blood_group"),
request.getString("date_of_request"),
request.getString("lat_lng"),
request.getString("address")
));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
Volley.newRequestQueue(getContext()).add(stringRequest);
}
}
我正在一个扩展了navigationDrawerActivity的片段中填充列表。