哪个是使用volley与服务器建立连接的正确方法?

时间:2016-02-03 13:19:43

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

这可能是一个愚蠢的问题,但我找不到我的问题的解决方案首先是Android开发新的我使用谷歌凌空绑定我的片段中的recyclerview连接服务器我写了凌空连接声明在oncreateview方法每当我打开那个片段时,它与服务器建立连接,获取与之前相同的记录,我应该做什么,当我做出响应时,我只需要从服务器获取该数据,因为这样会一次又一次地得到相同的数据每当我打开这个片段我真的很困惑这可以有人帮助我在这里让我发布我的代码:

public class Task extends Fragment {
    private static final String MY_PREFERENCE_KEY = "yogan";
    private List<Model_Task_List> model_task_lists;

    //Creating Views
    Context context;
    SharedPreferences.Editor editor;
    private RecyclerView recyclerView;
    Task_List_Adapter taskadapter;
    private RecyclerView.LayoutManager layoutManager;
    SharedPreferences sharedPreferences;
    private RecyclerView.Adapter adapter;
    Task_DB task_dbobj;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_task, container, false);
        recyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view);
        LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setItemAnimator(new DefaultItemAnimator());

        recyclerView.setLayoutManager(layoutManager);
        context=getActivity().getBaseContext();
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
        Gson gsong = new Gson();
        String jsons = sharedPreferences.getString(MY_PREFERENCE_KEY, "");
        Type type = new TypeToken<ArrayList<Model_Task_List>>() {
        }.getType();
        model_task_lists = gsong.fromJson(jsons, type);
if(model_task_lists==null) {
    model_task_lists = new ArrayList<Model_Task_List>();
    //Showing a progress dialog
}
        taskadapter = new Task_List_Adapter(model_task_lists, getContext());

        recyclerView.setAdapter(taskadapter);



        SharedPreferences sharedPreferences=getActivity().getSharedPreferences(LoginActivity.login,0);
        String yogan=sharedPreferences.getString("user_id",null);

        String Url = "http://xxx.xx.x.xxx/xxx/xxx.svc/getlist/GetTask/"+yogan;
        //Creating a json array request

        JsonObjectRequest jsonArrayRequest = new JsonObjectRequest(Request.Method.GET, Url, new JSONObject(),
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        TaskList(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getContext(), error.toString(), Toast.LENGTH_SHORT).show();
                        Log.e("yog", error.toString());
                    }
                });

        //Creating request queue
        RequestQueue requestQueue = Volley.newRequestQueue(getContext());

        //Adding request to the queue
        requestQueue.add(jsonArrayRequest);
        return view;
    }

    public void TaskList(JSONObject jsonObject) {
        String yogs = jsonObject.toString();
        try {
            JSONObject yog = new JSONObject(yogs);
            JSONArray yogan = new JSONArray(yog.getString("GetTaskResult"));
            for (int i = 0; i < yogan.length(); i++) {
                Model_Task_List modelobj = new Model_Task_List();

                JSONObject yogesh = yogan.getJSONObject(i);
                modelobj.setSubject(yogesh.getString("Subject"));
                modelobj.setUserName(yogesh.getString("UserName"));
                modelobj.setTaskStatus(yogesh.getString("TaskStatus"));
                model_task_lists.add(modelobj);
                taskadapter.notifyDataSetChanged();


              //  task_dbobj.insert(modelobj);


            }



            //Finally initializing our adapter


        } catch (JSONException e) {
            e.printStackTrace();
        }

    }


    @Override
    public void onStop() {
        context=getActivity().getApplicationContext();
        SharedPreferences sharedpref = PreferenceManager.getDefaultSharedPreferences(context);
        editor = sharedpref.edit();
        Gson gson=new Gson();
        String god = gson.toJson(model_task_lists);
        editor.putString(MY_PREFERENCE_KEY, god);
        editor.commit();
        super.onStop();
    }
}

如果有人告诉解决我的问题,我会很高兴!你在这里帮助像我们这样的初学者希望有人帮助!!!

1 个答案:

答案 0 :(得分:0)

首先,我建议更改你的库,Volley没有完全升级到API 23(因为删除org.apache包你将不得不使用遗留代码),所以我建议转移到okHttp或其他一些图书馆。 如果你想坚持使用Volley,你应该创建Volley.newRequestQueue(getContext());在Application类中的onCreate()方法中,然后重用相同的队列,而不是每次在片段内创建新队列。