Browse Source

1.修改CircleListAdapter逻辑解决滑动卡顿问题
2.修复自动加载崩溃bug

Junqin Wang 8 years ago
parent
commit
12b8bb74f7

+ 13 - 3
app/src/com/sheishuo/app/circle/activity/NewTweetingActivity.java

@@ -47,6 +47,7 @@ public class NewTweetingActivity extends SheishuoUI {
     private NewTweetPresenter presenter;
     private List<String> selectedPhotoPathList;
     private List<Integer> photoIds;
+    private Toast toast = null;
 //    private static MainActivity activity;
 
     public static void start(Context context) {
@@ -107,16 +108,19 @@ public class NewTweetingActivity extends SheishuoUI {
         });
 
 
+
+        //发布按钮监听事件
         toolbar.getRightTV().setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 if (NetStatus.IS_BUSY){
                     showToast("内容发布中,请稍后...");
                 }else {
+                    showToast("内容发布中...");
+                    toolbar.getRightTV().setEnabled(false);
                     getHandler().postDelayed(new Runnable() {
                         @Override
                         public void run() {
-                            showToast("内容发布中...");
                             presenter.publishNewTweeting(tweetContent.getText().toString(),photoIds);
                         }
                     },1000);
@@ -203,11 +207,17 @@ public class NewTweetingActivity extends SheishuoUI {
      * 以下为开放给Presenter的通用方法
      */
 
-    public void showToast(final String toast) {
+    public void showToast(final String str){
         getHandler().post(new Runnable() {
             @Override
             public void run() {
-                Toast.makeText(context, toast, Toast.LENGTH_SHORT).show();
+                if (toast == null){
+                    toast = Toast.makeText(context,str,Toast.LENGTH_SHORT);
+                }else {
+                    toast.setText(str);
+                }
+                toast.show();
+
             }
         });
     }

+ 4 - 33
app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java

@@ -71,40 +71,9 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         holder.dateTV.setText(bean.getInputtime());
         holder.likesNumTV.setText(bean.getLikes());
         holder.visitNumTv.setText(bean.getViews());
+        
 
-        //获取此朋友圈中的所有用户id
-        List<String> userList = new ArrayList<>();
-        //添加此朋友圈发布者id
-        userList.add(bean.getUser_id());
-        //添加此朋友圈喜欢用户的id
-        for (String likedUser : bean.getLike_users()){
-            if (!userList.contains(likedUser))
-                userList.add(likedUser);
-        }
-        //添加次朋友圈评论用户的id
-        for (CircleBean.DBean.ListBean.Comment comment : bean.getComments_list()){
-            if (!userList.contains(comment.getUser_id()))
-                userList.add(comment.getUser_id());
-        }
-
-        //使用NIM SDK更新用户信息并将用户信息显示出来
-        NIMClient.getService(UserService.class).fetchUserInfo(userList).setCallback(new RequestCallback<List<NimUserInfo>>() {
-            @Override
-            public void onSuccess(List<NimUserInfo> user) {
-                holder.usernameTV.setText(getUserName(bean.getUser_id()));
-
-            }
-
-            @Override
-            public void onFailed(int i) {
-
-            }
-
-            @Override
-            public void onException(Throwable throwable) {
-
-            }
-        });
+        holder.usernameTV.setText(getUserName(bean.getUser_id()));
 
 
         //加载thumbs
@@ -208,6 +177,8 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         if (position > data.size() - 2 && !data.get(data.size() - 1).getId().equals("1")) {
             Log.e("CircleListAdapter",data.get(data.size() - 1).getId());
             circleFragment.loadCircleListMore(data.get(data.size() - 1).getId());
+        }else if(data.get(data.size() - 1).getId().equals("1")){
+            circleFragment.showToast("已无更多内容");
         }
 
 

+ 32 - 3
app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java

@@ -53,6 +53,8 @@ public class CircleOfFriendsFragment extends MainTabFragment{
 
     private Handler handler = getHandler();
 
+    private Toast toast = null;
+    private long lastTime = System.currentTimeMillis();
 
 
     public CircleOfFriendsFragment(){
@@ -99,6 +101,8 @@ public class CircleOfFriendsFragment extends MainTabFragment{
         toolbar.init();
         toolbar.setTitle("朋友圈");
         toolbar.setRightText("发表");
+
+        //打开发布Activity
         toolbar.getRightTV().setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -107,6 +111,24 @@ public class CircleOfFriendsFragment extends MainTabFragment{
             }
         });
 
+
+        //双击标题返回顶部
+        toolbar.getTitleTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                long nowTime = System.currentTimeMillis();
+                long interval = lastTime - nowTime;
+                if (interval < 1000){
+                    lastTime = nowTime;
+                    if (recyclerView!=null){
+                        recyclerView.smoothScrollToPosition(0);
+                    }
+                }
+
+                lastTime = nowTime;
+            }
+        });
+
     }
 
 
@@ -125,7 +147,12 @@ public class CircleOfFriendsFragment extends MainTabFragment{
         handler.post(new Runnable() {
             @Override
             public void run() {
-                Toast.makeText(getActivity(),str,Toast.LENGTH_SHORT).show();
+                if (toast == null){
+                    toast = Toast.makeText(getActivity(),str,Toast.LENGTH_SHORT);
+                }else {
+                    toast.setText(str);
+                }
+                toast.show();
 
             }
         });
@@ -171,6 +198,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
      * @param lastId
      */
     public void loadCircleListMore(String lastId){
+        showToast("正在加载更多内容...");
         presenter.loadCircleList(AccountCache.getAccount().getId(),lastId);
     }
 
@@ -180,9 +208,10 @@ public class CircleOfFriendsFragment extends MainTabFragment{
      */
     public void refreshCircle(){
         if (adapter != null){
+            //防止Inconsistency detected
+            recyclerView.getRecycledViewPool().clear();
+
             adapter.clearAll();
-            //防止无网络时invalid viewholder
-            recyclerView.smoothScrollToPosition(0);
             loadCircleListMore("");
         }
     }