Android Volley推迟了Activity的UI

时间:2016-08-12 21:21:14

标签: android android-volley android-cardview

在这个项目中,我使用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;
    }


}

请帮助!!!

0 个答案:

没有答案