使用Volley解析json数据后,Recycler视图未显示在显示中

时间:2016-07-28 06:45:11

标签: java android json

我按照教程学习解析json数组,但是我遇到了问题,数据没有出现在json对象中,错误是否在于ArrayList?请帮忙 :)  谢谢之前:),

这里是Display.java

public class Display extends AppCompatActivity {

RecyclerView recyclerView;
RecyclerView.Adapter adapter;
RecyclerView.LayoutManager layoutManager;
ArrayList<Contact> arrayList = new ArrayList<>();
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display);

    recyclerView = (RecyclerView) findViewById(R.id.recycleView);
    layoutManager = new LinearLayoutManager(this);


    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setHasFixedSize(true);
    BackgroundTask backgroundTask = new BackgroundTask(Display.this);
    arrayList = backgroundTask.getList();
    adapter = new RecycleAdapter(arrayList);
    recyclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();
} }

RecycleAdapter.java

public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.myViewHolder> {

ArrayList<Contact> arrayList = new ArrayList<>();

public RecycleAdapter(ArrayList<Contact> array){
    this.arrayList = array;
}
@Override
public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item,parent,false);

    myViewHolder mv = new myViewHolder(view);
    return mv;
}

@Override
public void onBindViewHolder(myViewHolder holder, int position) {
    holder.Nama.setText(arrayList.get(position).getName());
    holder.Email.setText(arrayList.get(position).getEmail());
}

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

public static class myViewHolder extends RecyclerView.ViewHolder{
    TextView Nama,Email;
    public myViewHolder(View itemView) {
        super(itemView);
        Nama = (TextView) itemView.findViewById(R.id.nm);
        Email = (TextView) itemView.findViewById(R.id.em);
    }
}   }

BackgroundTask.java

public class BackgroundTask {
public Context context;

String json_url = "some url";
ArrayList<Contact> arrayList = new ArrayList<>();
public BackgroundTask(Context ctx){
    this.context = ctx;
}

public ArrayList<Contact> getList(){

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, json_url, (String) null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    int count = 0;
                    if(response !=null|| response.length() >0 ) {
                        while(count > response.length()){
                            try {
                                JSONObject jsonObject = response.getJSONObject(count);
                                Contact contact = new Contact(jsonObject.getString("Name"),jsonObject.getString("Email"));
                                arrayList.add(contact);

                                count++;
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(context, "error....", Toast.LENGTH_SHORT).show();
            error.printStackTrace();
        }
    });
    Mysingleton.getMysingleton(context).addToRequestQue(jsonArrayRequest);

    return arrayList;
} }

Mysingelton.java

public class Mysingleton {

public static Context context;
public RequestQueue requestQueue;
public static Mysingleton mysingleton;

public Mysingleton(Context ctx){
    context = ctx;
    requestQueue = getRequestque();
}

public RequestQueue getRequestque(){
    if(requestQueue == null){
        requestQueue = Volley.newRequestQueue(context.getApplicationContext());
    }
    return requestQueue;
}

public static synchronized Mysingleton getMysingleton(Context context){
    if(mysingleton == null){
        mysingleton = new Mysingleton(context);
    }
    return mysingleton;
}

public <T> void addToRequestQue(Request<T> request){
    requestQueue.add(request);
} }

0 个答案:

没有答案