在这个项目中,我使用Android Volley从服务器获取JSON数据,但是当我点击按钮时,新的Activity没有显示任何内容,当我返回并重新点击按钮时,它会显示所需的UI。
以下是活动代码
public class CardViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler_view);
getDataFromServer();
RecyclerView recycler_view=(RecyclerView)findViewById(R.id.recycler_view);
recycler_view.setHasFixedSize(true);
LinearLayoutManager lm=new LinearLayoutManager(this);
recycler_view.setLayoutManager(lm);
RecyclerAdapter adapter=new RecyclerAdapter();
recycler_view.setAdapter(adapter);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void getDataFromServer(){
String URL="";
StringRequest jsonRequest= new StringRequest(URL,
new Response.Listener<String>() {
@Override
public void onResponse(final String response) {
ParseJSON.parseJSON(response);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(CardViewActivity.this, "whats it", Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(this).add(jsonRequest);
}
}
以下是ParseJSON方法的代码
public class ParseJSON {
public static final String title="title";
public static final String sub_title="sub_title";
public static final String image_url="image_url";
public static int blogsCount;
public static ArrayList<String> titleList;
public static ArrayList<String> subTitleList;
public static ArrayList<String> imageUrlList;
public static void parseJSON(String response){
titleList = new ArrayList<String>();
subTitleList = new ArrayList<String>();
imageUrlList = new ArrayList<String>();
try {
JSONObject json= new JSONObject(response);
json=json.getJSONObject("result");
JSONArray blogArray=json.getJSONArray("blogs");
blogsCount=blogArray.length();
for(int i=0;i<blogsCount;i++){
titleList.add(blogArray.getJSONObject(i).getString(title));
subTitleList.add(blogArray.getJSONObject(i).getString(sub_title));
imageUrlList.add(blogArray.getJSONObject(i).getString(image_url));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
这是适配器代码
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {
//THIS <> GENERIC NEEDS TO BE UNDERSTOOD
public static class MyViewHolder extends RecyclerView.ViewHolder {
CardView card_view;
ImageView card_view_image;
View scrim_view;
TextView textOnImage;
TextView description_text;
TextView shareText;
TextView learnMoreText;
public MyViewHolder(View itemView) {
super(itemView);
card_view=(CardView)itemView.findViewById(R.id.card_view);
card_view_image=(ImageView)itemView.findViewById(R.id.card_view_image);
scrim_view=(View)itemView.findViewById(R.id.scrim_view);
textOnImage=(TextView)itemView.findViewById(R.id.text_on_image);
description_text=(TextView)itemView.findViewById(R.id.description_text);
shareText=(TextView)itemView.findViewById(R.id.share_text);
learnMoreText=(TextView)itemView.findViewById(R.id.learn_more_text);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).
inflate(R.layout.activity_card_view,parent,false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.textOnImage.setText(ParseJSON.titleList.get(position));
holder.description_text.setText(ParseJSON.subTitleList.get(position));
}
@Override
public int getItemCount() {
return ParseJSON.blogsCount;
}
}
请帮助!!!