我按照教程学习解析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);
} }