iT邦幫忙

0

android RecycleView無限滾動 java陣列條件問題 搞了兩天還沒好請給我想法Orz

  • 分享至 

  • xImage

我正在使用RecycleView做無限滾動的功能
假如我資料庫有50筆資料 我先列出10筆 另外幾筆等我往下滑的時候再出現10筆以下類推
我現在的問題是我不清楚要怎麼將資料每10筆10筆的寫入陣列裡 每次都是要嘛全部進去
要嘛就是重複的10筆一直重複
我覺得的因該很多人看不懂我在說啥==

這是寫入到陣列裡
我在這裡的想法是一次寫入10筆資料
如果這邊 for (int t=0;t < jsonArray.length();t++)改這樣他會列印全部
這樣我延遲讀取的意義就沒了我很苦惱請幫助我
如果還有哪裡不清楚 請告訴我

這邊這樣t < 10 他就會變成指列印前10筆 目前是我要的,但當我想繼續往下讀下一個10筆的時候他會重複第一次的10筆

private void select(String user_id,String partno){
        try {
            String r = DB_shopphp_Y.DBstr(user_id,partno,cookie,url);
            JSONArray jsonArray = new JSONArray(r);
            for (int t=0;t < 10;t++){
                JSONObject jsonData = jsonArray.getJSONObject(t);
                items.add(new PostItem(jsonData.getString("card_id")));
            }
        }catch (Exception e){
        }
    }

這是我畫面的部分
呼叫我的select讀取資料 然後顯示

private void doApiCall() {

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                select(user_id,"");
                //管理畫面
                if (currentPage != PAGE_START) adapter.removeLoading();
                adapter.addItems(items);
                swipeRefresh.setRefreshing(false);
                // check weather is last page or not
                if (currentPage < totalPage) {
                    adapter.addLoading();
                } else {
                    isLastPage = true;
                }
                isLoading = false;
            }
        }, 100);
    }
看更多先前的討論...收起先前的討論...
GHH iT邦新手 1 級 ‧ 2020-03-23 11:17:51 檢舉
用一個全域變數記錄現在讀到哪一筆資料,迴圈改成for (int t= 全域變數;t < 全域變數 + 10;t++)
不好意思 這樣打 他還是先讀一開始的前10筆
GHH iT邦新手 1 級 ‧ 2020-03-23 15:39:40 檢舉
每次跑完迴圈你的全域變數要加 10
我打完會變成前面一樣但後面確實有新的資料 換個說法就是總數增加 但還是會出現重複的問題。
例:1:1-10、 2:1-20、3:1-30 類推
對了我在這邊沒有使用全域變數指用單純的private 因為我發現這樣會變成當我離開這個畫面的時候 我的值不變 但我的畫面資料是消失的要重新讀取

有任何錯誤請告訴我
這是我的程式碼:
private int number =0; //總值
private int test =0; //跑過幾次

private void select(String user_id,String partno){
try {
String r = DB_shopphp_Y.DBstr(user_id,partno,cookie,url);
JSONArray jsonArray = new JSONArray(r);
number = test ;

for (int t=number;t<number+10;t++){
test++;
JSONObject jsonData = jsonArray.getJSONObject(t);
items.add(new PostItem(jsonData.getString("card_id"),jsonData.getString("user_id"),jsonData.getString("user_phone"),jsonData.getString("part_no")
,jsonData.getString("product_name"),jsonData.getString("specification"),jsonData.getString("selling_price"),jsonData.getString("operations_center")
,jsonData.getString("inventory"),jsonData.getString("order_number"),jsonData.getString("order_date"),jsonData.getString("picture_id"),jsonData.getString("buy")));
}

}catch (Exception e){
}
}
神威 iT邦研究生 4 級 ‧ 2020-03-23 16:37:50 檢舉
"總數增加 但還是會出現重複的問題"
你應該先 items.clear();把之前的資料清除再add才行
成功了 * 卡了兩天 都在想是我for條件問題 忘記陣列資料 哀~~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答