как получить больше данных от JSON, прокручивая просмотр списка в androidstudio - PullRequest
0 голосов
/ 18 марта 2019

Я написал свой код, и когда я запускаю свой проект, он работает, но когда я прокручиваю страницу вниз, она внезапно исчезает и ничего не видно! Кто-нибудь может мне помочь исправить мой код? Также я хочу видеть панель процессов или TextLoading, и я ухудшаю это в Layout, но я не знаю, когда я использую это. Я проверил некоторые коды, но не могу найти решение, кто-нибудь может исправить мой код, пожалуйста?

    public   void Mylistviewfunction ( final String myoffsetinner){
       Thread thread = new Thread(new Runnable() {

        @Override
        public void run() {
         //try{// for using sleep in thread

            String url = "http://myurl.com/test.php?myoff="+myoffsetinner;// url is example and not exist in real
            StringRequest strRequest = new StringRequest(Request.Method.POST, url,
                    new Response.Listener<String>()
                    {
                        @Override
                        public void onResponse(String response)
                        {
                          listItem = new ArrayList<String>();
                              ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,R.layout.customemp,R.id.txtfillemp,listItem);
                            li1.setAdapter(adapter);
                             try {
                                JSONArray jsonArray = new JSONArray(response);
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject js = jsonArray.getJSONObject(i);
                                    String add = js.getString("addvertise");
                                    String date = js.getString("date");
                                    final String telnumber = js.getString("tel");
                                    listItem.add(date+ "\n" + add + "\t");//t for fazele
                                }
                                adapter.notifyDataSetChanged();
                            }
                            catch (JSONException e) {
                                e.printStackTrace();
                            }
                            catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    },
                    new Response.ErrorListener()
                    {
                        @Override
                        public void onErrorResponse(VolleyError error)
                        {
                            Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_SHORT).show();
                        }
                    })
            {
                @Override
                protected Map<String, String> getParams()
                {
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("tag", "test");
                    return params;
                }
            };

            queue.add(strRequest);
           //    Thread.sleep(720000);
       /* }
                catch (InterruptedException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
         */
        }
    });
    thread.start();
}// void Mylistviewfunction

и я называю Myfunction так:

enter code here @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  LayoutInflater mylay =(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    li1 = findViewById(R.id.li1);
    queue = Volley.newRequestQueue(this);

    myoffset ="0";
    Mylistviewfunction (myoffset);// first time

    li1.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            int lastInScreen = firstVisibleItem + visibleItemCount;
           if(lastInScreen == totalItemCount){

                Toast.makeText(getApplicationContext(),"lastInScreen :"+lastInScreen+"totalItemCount:"+ totalItemCount, Toast.LENGTH_SHORT).show();
                myoffset =myoffset+10;
                Mylistviewfunction (myoffset);// again call the functions


            }


        }
    });


}

и мой код сервера такой:

select * from mytable where confirm=?  ORDER BY id DESC limit 10 offset $offset
...