代码之家  ›  专栏  ›  技术社区  ›  Ashish John

未从回调方法更新视图

  •  2
  • Ashish John  · 技术社区  · 6 年前

    我正在从数据库中获取数据。我的视图仅在我打开活动时第一次更新。然后,当我再次打开活动时,我的视图不会更新。(活动将再次启动,因此 onCreate() 再次调用&所有设置都相同)。 如果我 getText() 设置文本后,我将在日志中获得正确的值,但视图中不显示任何值。

    这是我的代码段:

    //My Call Back method    
    @Override
        public void onRatingDataLoaded(ReviewJsonModel review) {
    
            int ratingCount = 0, ownRating = 0;
            String averageRating = "0";
            if (review != null) {
                ratingCount = review.review_count;
                DecimalFormat format = new DecimalFormat("##.00");
    
                averageRating = format.format(review.rating);
                if (review.ownreviews != null) {
    
                    try {
                        ownRating = Integer.parseInt(review.ownreviews.rating);
                    } catch (NumberFormatException e) {
                        e.printStackTrace();
                    }                
                }
            } else {
                // do something
            }
    
            mTotalRatingCount.setText(String.format(getResources().getString(R.string.review_count), ratingCount));
            mAverageRating.setText(averageRating);
    
    // Log.v("LoggingReview", mTotalRatingCount.getText().toString().trim);
            myRating.setRating(ownRating);        
        }
    

    //我在这里设置listner并加载数据。

    public void loadReviewData(RatingDataLoadListener listener, int destinationId) {
            if (mDataLoadListener == null)
                mDataLoadListener = listener;
    
            new getReviews().execute(destinationId);
    
        }
    

    下一个是我的避难所

    private class getReviews extends AsyncTask<Integer, Void, ReviewJsonModel> {
    
            @Override
            protected ReviewJsonModel doInBackground(Integer... integers) {
                Cursor appCursor = mRatingApi.getDestinationReview(integers[0]);
    
                ReviewJsonModel mReviewData = new ReviewJsonModel();
                if (appCursor != null && appCursor.getCount() > 0) {
                    appCursor.moveToFirst();
                    while (!appCursor.isAfterLast()) {
                        mReviewData = getDocument(appCursor);
                        appCursor.moveToNext();
    
                    }
                    appCursor.close();
                }
    
                return mReviewData;
            }
    
            @Override
            protected void onPostExecute(ReviewJsonModel result) {
                super.onPostExecute(result);
    
                if (mDataLoadListener != null)
                    mDataLoadListener.onRatingDataLoaded(result);
            }
        }
    

    找不到问题的原因。感谢您的帮助。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Krishna Sharma    6 年前

    public void loadReviewData(RatingDataLoadListener listener, int destinationId) {
        mDataLoadListener = listener; 
        new getReviews().execute(destinationId); 
    }