【发布时间】:2021-04-08 03:16:01
【问题描述】:
我有一个大问题。
我的RecyclerView 不起作用,我不知道如何解决我的问题。
在我的 Logcat 中,Fragment 似乎不调用onResponse,而只调用ErrorResponse。
我尝试了一切,但没有任何帮助。
不知道哪一部分出错了,为什么不起作用。
我的家庭片段:
public class Home_Fragment extends Fragment {
private String URL= "http://localhost/pages/index.php";
private RecyclerAdapter recyclerAdapter;
private RecyclerView recyclerView;
private ArrayList<Data> listdata;
private static final String TAG = "Home_Fragment";
private GridLayoutManager gridLayoutManager;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
public Home_Fragment() {
// Required empty public constructor
}
private void AmbilData() {
JsonArrayRequest aarRequest = new JsonArrayRequest(URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if (response.length()>0){
for (int i =0 ; i<response.length();i++){
try {
JSONObject data = response.getJSONObject(i);
Data item = new Data();
item.setEventname(data.getString("Eventname"));
item.setEventhost(data.getString("Eventclub"));
item.setEventclub(data.getString("Eventhost"));
item.setGenre(data.getString("Genre"));
item.setDate(data.getString("Date"));
item.setAdress(data.getString("Adress"));
item.setTime(data.getString("Time"));
item.setPrice(data.getString("Price"));
} catch (JSONException e) {
}
}
recyclerAdapter.addData(listdata);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
};
Volley.newRequestQueue(getActivity()).add(aarRequest);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView: createview");
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home_, container, false);
AmbilData();
recyclerView = view.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
gridLayoutManager = new GridLayoutManager(getActivity(), 2);
gridLayoutManager.setOrientation(GridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(gridLayoutManager);
listdata = new ArrayList<Data>();
recyclerAdapter = new RecyclerAdapter(getActivity(),listdata);
recyclerView.setAdapter(recyclerAdapter);
recyclerAdapter.notifyDataSetChanged();
Log.d(TAG, "onCreateView: viewreturned");
return view;
}
}
我的 RecyclerAdapter
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private ArrayList<Data> listdata;
private Activity activity;
private Context context;
private static final String TAG = "Recycler";
public RecyclerAdapter(Activity activity, ArrayList<Data> listdata) {
this.listdata = listdata;
this.activity = activity;
}
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.d(TAG, "onCreateViewHolder: create Holder");
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.event_cardview, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Log.d(TAG, "onBindViewHolder: Create holder Items");
//holder.mImage.setImageResource(listdata.get(position).getThubnail());
holder.eventname.setText(listdata.get(position).getEventname());
holder.eventclub.setText(listdata.get(position).getEventclub());
holder.eventhost.setText(listdata.get(position).getEventhost());
holder.genre.setText(listdata.get(position).getGenre());
holder.date.setText(listdata.get(position).getDate());
holder.adress.setText(listdata.get(position).getAdress());
holder.time.setText(listdata.get(position).getTime());
holder.price.setText(listdata.get(position).getPrice());
}
public void addData(List<Data> data) {
listdata.addAll(data);
notifyDataSetChanged();
}
@Override
public int getItemCount() {
Log.d(TAG, "getItemCount: return size");
return listdata.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private CardView cv;
private TextView eventname,eventclub,eventhost,genre,date,adress,time,price;
private static final String TAG = "Class";
public ViewHolder(View v) {
super(v);
Log.d(TAG, "ViewHolder: created");
cv=(CardView)v.findViewById(R.id.eventcardview);
eventname=(TextView)v.findViewById(R.id.EventName);
eventclub=(TextView)v.findViewById(R.id.EventClub);
eventhost=(TextView)v.findViewById(R.id.EventHost);
genre=(TextView)v.findViewById(R.id.Genre);
date=(TextView)v.findViewById(R.id.dark);
adress=(TextView)v.findViewById(R.id.location_adress);
time=(TextView)v.findViewById(R.id.Time);
price=(TextView)v.findViewById(R.id.Price);
}
}
}
我的数据
public class Data {
private String eventname;
private String eventclub;
private String eventhost;
private String genre;
private String date;
private String adress;
private String time;
private String price;
public String getEventname() {
return eventname;
}
public void setEventname(String eventname) {
this.eventname = eventname;
}
public String getEventclub() {
return eventclub;
}
public void setEventclub(String eventlcub) {
this.eventclub = eventclub;
}
public String getEventhost() {
return eventhost;
}
public void setEventhost(String eventhost) {
this.eventhost = eventhost;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
当我在我的计算机上打开 localhost/pages/index.php 时,它会显示:
{"ID":1,"Eventname":"Imagine-Event","Eventclub":"Imagine-Club","Eventhost":"Imagine-Host","Genre":"Techno","Date":"2020-12-31","Time":"22:00-06:00","Adress":"Frankfurt Gutleutstra\u00dfe 126a","Price":15}
{"ID":2,"Eventname":"Hello-Event","Eventclub":"Hello-Club","Eventhost":"Hello-Host","Genre":"Hello","Date":"2021-01-01","Time":"21:00-6:00","Adress":"Frankfurt am Main Sachsenhausengasse 128a","Price":5}
{"ID":3,"Eventname":"Fantasy-Event","Eventclub":"Fantasy-Club","Eventhost":"Fantasy-Host","Genre":"Mainstream","Date":"2021-02-19","Time":"00:00-12:00","Adress":"Langen (Hessen) Sehretstra\u00dfe 33a","Price":5}
{"ID":4,"Eventname":"This Event","Eventclub":"This-Club","Eventhost":"This Host","Genre":"Hip-Hop","Date":"2021-03-03","Time":"20:00-2:00","Adress":"Frankfurt am Main Goethestra\u00dfe","Price":15}
当我启动它时,它不显示 Recyclerview 是什么问题试图解决它 10 个小时。
【问题讨论】:
-
onError 返回什么错误?里面有关于这个问题的数据。
-
其实我可以告诉你——网址是错误的。本地主机将是电话本身,而不是运行服务器的 PC。即使它是模拟器,模拟器也会运行虚拟机。您需要使用服务器的实际 IP(或 DNS 名称,但您可能没有)。
-
感谢您的回答我更改了 URL 但它现在不起作用似乎运行时 if 行未调用添加了一些 LOG 并且只调用了 ErrorResponse LOG。
标签: java android json android-fragments android-recyclerview