1

在下面的代码中,分页数据存储到数据库之后,但是当我从数据库中获取新数据时,自定义列表没有显示任何数据,但是如果我转到下一个选项卡并返回它开始显示数据(注意:来自数据库的新数据成功获取仅未生成自定义列表),有什么我遗漏的吗?

下面是代码片段

 private void getFeedsData() {
        // TODO Auto-generated method stub

        VictoriesDBAdapter mFeedsDBAdapter = new VictoriesDBAdapter(this,
                Constants.strFeedsTableName);

        try {
            // //////getting all Feeds Data from API into response
            mAppStatus = AppStatus.getInstance(this);
            List<NameValuePair> params = new ArrayList<NameValuePair>(2);
            params.add(new BasicNameValuePair(Constants.AUTH_KEY, mAppStatus
                    .getSharedStringValue(Constants.AUTH_KEY)));
            String pageNumber = new Integer(iPageNo).toString();
            params.add(new BasicNameValuePair("PAGE_NO", pageNumber));
            String strJsonReponse = RestClient.getInstance(this).doApiCall(
                    Constants.strFeedsTab, "GET", params);
            Log.i("Feeds Data Response...######",
                    String.valueOf(strJsonReponse));

            // Fetching web service Response
            // String strJsonReponse =
            // "[{\"title\":\"Invitation through Email\",\"user\":{\"email\":\"as@as.com\"},\"created_at\":\"2012-04-09T05:53:31Z\",\"id\":43},{\"title\":\"Sample Victory\",\"user\":{\"email\":\"mahesh@yopmail.com\"},\"created_at\":\"2012-04-10T15:56:32Z\",\"id\":49}]";
            // Log.i("JSON RESONSE.....####", strJsonReponse);
            if (isNewFlag == true)
                mFeedsDBAdapter.deleteAll();
            if (strJsonReponse.equals("[]")) {
                bIsLastPage = true;
                Log.i("emtryyyyyyyyyy", "NULL");
                generateCustomList();
            } else {

                ParseResult parser = new ParseResult();
                ArrayList<VictoriesDataModel> victoriesArray = parser
                        .parseVictoriesData(strJsonReponse, isPostedByFlag);
                dbFunctions.storeFeedsDataInDB(victoriesArray);


            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


private void generateCustomList() {
        // TODO Auto-generated method stub
        VictoriesDBAdapter mFeedsDBAdapter = new VictoriesDBAdapter(
                FeedsActivity.this, Constants.strFeedsTableName);
    //  VictoriesDataModel mVictoriesDataModel = new VictoriesDataModel();
        ArrayList<VictoriesDataModel> victoriesData = mFeedsDBAdapter
                .getVictoriesList(0, FeedsActivity.this);
        listCustomListViewId.setAdapter(new FeedsListAdapter(
                FeedsActivity.this, victoriesData)); // display data into custom
                                                        // list
         listCustomListViewId.setOnScrollListener(new OnScrollListener() {

         @Override
         public void onScrollStateChanged(AbsListView view, int scrollState) {
         // TODO Auto-generated method stub

         }

         @Override
         public void onScroll(AbsListView view, int firstVisibleItem,
         int visibleItemCount, int totalItemCount) {
         // TODO Auto-generated method stub
         int lastInScreen = firstVisibleItem + visibleItemCount;
         // is the bottom item visible & not loading more already ? Load
         // more !
         Log.i("Endless List", "########firstVisibleItem"
         + firstVisibleItem);
         Log.i("Endless List", "########visibleItemCount"
         + visibleItemCount);
         Log.i("Endless List", "########last in screen" + lastInScreen);
         Log.i("Endless List", "########total Item" + totalItemCount);
         if ((totalItemCount != 0) && (lastInScreen == totalItemCount)
         && !(loadingMore)) {
         Log.i("Endless List", "########getting 10 more List items");

         if (!bIsLastPage) {
         // FeedsActivity.this.showDialog(0);
         iPageNo++;
         Log.i("Page No.....", String.valueOf(iPageNo));
         loadingMore = true;
         isNewFlag = false;
         getFeedsData();
         Log.i("control......", "At POssssssss");
         loadingMore = false;

         }
         }

         }
         });
    }
4

1 回答 1

0

在列表适配器的数据更改后调用此方法:

mFeedsDBAdapter.notifyDataSetChanged() ;
于 2012-04-19T07:42:24.747 回答