我的片段无法显示json url的recyclerview和数据

时间:2018-12-13 14:03:16

标签: json android-studio android-fragments android-recyclerview android-volley

在调用add之后,我一直在使用notifychanged()。而且我的logcat中没有错误。 loaddata()加载不带JSON网址的数据。并获取data()以从json网址加载数据。请帮我。我的android清单已设置为android权限。我很困惑。我一直遵循显示我的recyclerview的方法,但是没有显示数据的方法。我使用来自heroku的网址。和json显示。你能告诉我如何解决我的问题吗?非常感谢你。 :)

这是我的家碎片

package com.android.herry.combile;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.textclassifier.TextLinks;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class FragmentHome extends Fragment {
    private RecyclerView listevent;
    private LinearLayoutManager linearLayoutManager;
    private EventAdapter eventListAdapter;
    private Context context;
    private RecyclerView mList;

    private final static String url= "https://guarded-scrubland-29104.herokuapp.com/index.php?action=show_data";

    public static FragmentHome newInstance(){
        return new FragmentHome();
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.context = context;
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_home, container, false);
        listevent = (RecyclerView) rootView.findViewById(R.id.listEvent);
        return rootView;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        linearLayoutManager = new LinearLayoutManager(context);
        eventListAdapter = new EventAdapter();
        listevent.setLayoutManager(linearLayoutManager);
        listevent.setAdapter(eventListAdapter);

        getData();
    }

    private void loadData(){
        List<Event> memberList = new ArrayList<>();
        Event member;

        int thumb[] = {R.drawable.ic_account, R.drawable.ic_account, R.drawable.ic_account,
                R.drawable.ic_account, R.drawable.ic_account, R.drawable.ic_account,
                R.drawable.ic_account, R.drawable.ic_account, R.drawable.ic_account,
                R.drawable.ic_account, R.drawable.ic_account, R.drawable.ic_account,
                R.drawable.ic_account, R.drawable.ic_account, R.drawable.ic_account,
                R.drawable.ic_account, R.drawable.ic_account, R.drawable.ic_account,
                R.drawable.ic_account, R.drawable.ic_account};

        String name[] = {"Ayana Shahab", "Beby Chaesara Anadila", "Delima Rizky", "Dena Siti Rohyati",
                "Elaine Hartanto", "Frieska Anastasia Laksani", "Gabriella M. W.", "Ghaida Farisya",
                "Jennifer Rachel Natasya", "Jessica Vania Widjaja", "Jessica Veranda", "Melody Nurramdhani Laksani",
                "Nabilah Ratna Ayu Azalia", "Rezky Wiranti Dhike", "Sendy Ariani", "Shania Junianatha",
                "Shinta Naomi", "Sofia Meifaliani", "Sonia Natalia", "Thalia Ivanka Elizabeth"};

        String team = "Team J";

        for(int i=0; i < thumb.length; i++){
            member = new Event();
            member.setId(i+1);
            member.setTitle(name[i]);
            member.setDetail(team);
            member.setPic(thumb[i]);

            memberList.add(member);
        }
        eventListAdapter.addAll(memberList);
    }


    private void getData(){
        final List<Event> listitem = new ArrayList<>();
        final Event item=new Event();
        final String[] ocha = new String[1];
        StringRequest jsonArrayRequest = new StringRequest(Request.Method.GET,url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {


                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(response);
                    JSONArray array = jsonObject.getJSONArray("Records");

                    for (int i = 0; i < array.length(); i++) {

                        jsonObject = array.getJSONObject(i);
                        item.setTitle(jsonObject.getString("event_id"));
                        item.setDetail(jsonObject.getString("detail"));
                        item.setId(jsonObject.getInt("event_id"));

                        ocha[0] =jsonObject.getString("event_id")+ocha;
                     //   Log.e("ochantik", String.valueOf(ocha));

                        listitem.add(item);
                        eventListAdapter.notifyDataSetChanged();

                    }

                    listevent.setAdapter(eventListAdapter);
                } catch (JSONException e) {
                        e.printStackTrace();

                    }
                }



        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Volley", error.toString());

            }
        });
        RequestQueue requestQueue =  Volley.newRequestQueue(getActivity().getApplicationContext());
        requestQueue.add(jsonArrayRequest);



    }


    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }
}

这是Event.java

package com.android.herry.combile;

import android.os.Parcel;
import android.os.Parcelable;

public class Event implements Parcelable {
    private int id;
    private String title;
    private String detail;
    private int pic;

    protected Event(Parcel in) {
        id = in.readInt();
        title = in.readString();
        detail = in.readString();
        pic= in.readInt();
    }


    public static final Parcelable.Creator<Event> CREATOR = new Parcelable.Creator<Event>() {
        @Override
        public Event createFromParcel(Parcel in) {
            return new Event(in);
        }

        @Override
        public Event[] newArray(int size) {
            return new Event[size];
        }
    };

    public Event() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDetail() { return detail; }

    public void setDetail(String detail) { this.detail = detail; }

    public int getPic() { return pic; }

    public void setPic(int pic) {
        this.pic = pic;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(id);
        dest.writeString(title);
        dest.writeString(detail);
        dest.writeInt(pic);
    }
}

这是我的适配器

package com.android.herry.combile;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;

public class EventAdapter extends RecyclerView.Adapter<EventAdapter.EventViewHolder> {
    private List<Event> eventList;

    public EventAdapter() {
        eventList = new ArrayList<>();
    }

    private void add(Event item) {
        eventList.add(item);
        notifyItemInserted(eventList.size() - 1);
    }


    public void addAll(List<Event> eventList) {
        for (Event event : eventList) {
            add(event);
        }
    }

    public void remove(Event item) {
        int position = eventList.indexOf(item);
        if (position > -1) {
            eventList.remove(position);
            notifyItemRemoved(position);
        }
    }

    public void clear() {
        while (getItemCount() > 0) {
            remove(getItem(0));
        }
    }

    public Event getItem(int position) {
        return eventList.get(position);
    }

    @Override
    public EventViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.event_list, parent, false);
        EventViewHolder memberViewHolder = new EventViewHolder(view);
        return memberViewHolder;
    }

    @Override
    public void onBindViewHolder(EventViewHolder holder, int position) {
        final Event event = eventList.get(position);

        holder.EventPic.setImageResource(event.getPic());
        holder.EventTitle.setText(event.getTitle());
        holder.EventDetail.setText(event.getDetail());
    }

    @Override
    public int getItemCount() {
        return eventList.size();
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

    @Override
    public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
        super.onDetachedFromRecyclerView(recyclerView);
    }

    static class EventViewHolder extends RecyclerView.ViewHolder {
        ImageView EventPic;
        TextView EventTitle;
        TextView EventDetail;

        public EventViewHolder(View itemView) {
            super(itemView);

            EventPic = (ImageView) itemView.findViewById(R.id.Event_pic);
            EventTitle = (TextView) itemView.findViewById(R.id.Event_Title);
            EventDetail = (TextView) itemView.findViewById(R.id.Event_Detail);
        }
    }
}

0 个答案:

没有答案