2015-12-24 2 views
1

Я вставив значение RecyclerView следуя путиRecyclerView ни обновление в notifyItemInserted или в notifyItemRemoved

public class UserListFragment extends Fragment implements UserEvents { 


    private View rootView; 
    private Activity mActivity; 
    private RecyclerView recyclerView; 
    ArrayList<User> mUserList; 

    RoomOrUserRecyclerViewAdapter adapter; 


    public static Fragment newInstance() { 
     UserListFragment f = new UserListFragment(); 
     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     rootView = inflater.inflate(R.layout.user_list_fragment, container, false); 
     findViews(rootView); 
     return rootView; 
    } 

    private void findViews(View view) { 

     recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); 
     mUserList = ((SocketApplication) mActivity.getApplication()).getUserListExcludeMineId(); 

     if (mUserList != null && mUserList.size() > 0) { 

      adapter = new RoomOrUserRecyclerViewAdapter(getActivity(), mUserList, null); 
      recyclerView.setAdapter(adapter); 
     } 

     ((SocketApplication) mActivity.getApplication()).setmUserEventsInterface(this); 

    } 


    @Override 
    public void onAttach(Activity activity) { 
     mActivity = activity; 
     super.onAttach(activity); 
    } 

    @Override 
    public void onUserLeft(int position) { 
     if (position != -1) { 
      adapter.notifyItemRemoved(position); 
      adapter.notifyItemRangeChanged(position, mUserList.size()); 
     } 
    } 

    @Override 
    public void onUserJoin(final User user) { 
     mUserList.add(user); 
     adapter.notifyItemInserted(mUserList.size() - 1); 
    } 
} 

, но этот элемент не вставлен или я показываю ничего обновления в интерфейсе

может кто-нибудь помочь мне, как для решения этой проблемы

когда-либо новый пользователь вставленный или удаленный метод этого интерфейса UserEvents будет выполнять

@Override 
     public void onUserLeft(int position) { 
      if (position != -1) { 
       adapter.notifyItemRemoved(position); 
       adapter.notifyItemRangeChanged(position, mUserList.size()); 
      } 
     } 

     @Override 
     public void onUserJoin(final User user) { 
      mUserList.add(user); 
      adapter.notifyItemInserted(mUserList.size() - 1); 
     } 
    } 

, но не знает, почему Ресайклер не обновляется

Ниже приведен скриншот моего отладчика точки

http://i.stack.imgur.com/jraNx.png

ответ

0

Вы можете попробовать этот код? Я пробую этот код, мой проект и работает.

@Override 
     public void onUserLeft(final int position) { 
      if (position != -1) { 
         mUserList.remove(position); 
         adapter.notifyItemRangeChanged(position,1); 
      } 
     } 

     @Override 
     public void onUserJoin(final User user) { 
        mUserList.add(user); 
        adapter.notifyItemRangeChanged(mUserList.size()-1,1); 
     } 
+0

Ничего не случится брата, я отлаживать приложение, которое указатель приходит туда, но интерфейс не обновляет – user2401268

+0

@ user2401268 нормально, я стараюсь снова братан. – mustafasevgi

+0

Можете попробовать еще раз? – mustafasevgi

0

попробовать это

mUserList.remove(position); 
recycler.removeViewAt(position); 
adapter.notifyItemRemoved(position);     
adapter.notifyItemRangeChanged(position, mUserList.size()); 
+0

Спасибо, брат, но если это правильно, то как насчет добавления – user2401268

+0

попробовал ваш путь, но ничего не происходит? – user2401268

+0

сообщение, на которое вы вызываете 'onUserLeft ' –

0

Попробуйте с этим после удаления или добавления.

new Handler(Looper.getMainLooper()).post(new Runnable() { 
    @Override 
    public void run() { 
     adapter.notifyDataSetChanged(); 
    } 
}); 
+0

Ничего не происходит :(не может найти решение, в чем проблема – user2401268

+0

Я отредактировал свой ответ. – AndroidRuntimeException

Смежные вопросы