Как отменить прокрутку чата в android? - PullRequest
1 голос
/ 04 августа 2020

Я создаю чат-приложение. Я пытаюсь отменить прокрутку данных чата и хочу перезагрузить данные снизу. Как перезагрузить recyclerview, когда я нажимаю кнопку отправки. Иногда он показывает данные второй страницы. Я также пробовал использовать разбиение на страницы. но это не работает. Я видел несколько примеров, также они использовали firebase.

@Override
protected void onCreate(Bundle savedInstanceState) {
    supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);
    loginmodel = new Gson().fromJson(SharedPref.Getloggeduserdetials(SharedPref.LOGGOEDUSERDATABASE, ""), Loginmodel.class);

    send = findViewById(R.id.send);
    message = findViewById(R.id.message);
    rv_chat = findViewById(R.id.rv_chat);
    //rv_chat.setHasFixedSize(true);
    department = findViewById(R.id.department);
    name = findViewById(R.id.name);
    back_button = findViewById(R.id.back_button);

    ((Myapp) getApplication()).getAppComponent().doInjection(Chatactivity.this);
    chatviewmodel = ViewModelProviders.of(this, viewModelFactorys).get(Chatviewmodel.class);
    chatviewmodel.apiResponse().observe(this, this::consumeResponsess);
    is_item_cleared = true;
    linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setStackFromEnd(true);
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    rv_chat.setLayoutManager(linearLayoutManager);
    chatadapter = new ChatAdapter(this, Chatactivity.this);
    rv_chat.setAdapter(chatadapter);

    name.setText(loginmodel.getName());
    department.setText(loginmodel.getDepartment());
    chatviewmodel.receive_msg(String.valueOf(page), SharedPref.getToken(SharedPref.TOKEN, ""), Chatactivity.this);
    send.setOnClickListener(view ->
    {
        chatviewmodel.send_msg(message.getText().toString(), SharedPref.getToken(SharedPref.TOKEN, ""), Chatactivity.this);
        message.setText("");
    });
    back_button.setOnClickListener(view->{
        onBackPressed();
    });
    rv_chat.addOnScrollListener(new PaginationScrollListener(linearLayoutManager) {
        @Override
        protected void loadMoreItems() {
            isLoading = true;
            Log.d("Page_No.10", String.valueOf(page));
            if (!isLastPage) {
                Log.d("Page_No.7", String.valueOf(page));
                        new Handler().postDelayed(() -> {
                            is_item_cleared = false;
                            Log.d("Page_No.8", String.valueOf(page));
                            chatviewmodel.receive_msg(String.valueOf(page), SharedPref.getToken(SharedPref.TOKEN, ""), Chatactivity.this);
                        }, 200);
            }
        }

        @Override
        public boolean isLastPage() {
            return isLastPage;
        }

        @Override
        public boolean isLoading() {
            return isLoading;
        }
    });
}
private boolean listIsAtTop() {
    if (rv_chat.getChildCount() == 0) return true;
    return rv_chat.getChildAt(0).getTop() == 0;
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent(this, Profile_Activity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
}

@Override
public void handleresponse(ApiResponse apiResponse) {
    Log.w("Api Response", new GsonBuilder().setPrettyPrinting().create().toJson(apiResponse.data.getData()));
    //swipeTorefresh.setRefreshing(false);
    isLoading = false;
    isLastPage = false;
    if (apiResponse.data.getSuccess().equalsIgnoreCase("1")) {
        if (apiResponse.data.getData() instanceof Pagination) {
            if (apiResponse.data.getData() != null) {
                Pagination<ChatModel> pagination = (Pagination<ChatModel>) apiResponse.data.getData();
                if (pagination.getData() != null) {
                    if (chatadapter != null) {
                        if (is_item_cleared) {
                            chatadapter.clearitem();
                        }
                        chatadapter.addItems(pagination.getData());
                        if (pagination.getData()!= null) {
                            isLastPage = true;
                        }
                        else {
                            page += 1;
                        }
                    }
                } else {
                    page = 1;
                    chatviewmodel.receive_msg(String.valueOf(page), SharedPref.getToken(SharedPref.TOKEN, ""), Chatactivity.this);
                }
            } else if (apiResponse.data.getData() instanceof Baseresponse) {
                Utility.Logout(this);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...