gpt4 book ai didi

java - 将 recyclerView 焦点/滚动到最后一个项目

转载 作者:行者123 更新时间:2023-12-02 09:52:06 24 4
gpt4 key购买 nike

我的应用程序有主要的聊天风格 Activity ,由 RecycleView 组成,由列表填充。用户插入新项目(文本输入、照片/视频捕获)后,回收应滚动/聚焦到列表的最后一项,但即使在使用 recyclerView.scrollToPosition(CustomList.size 后,回收器仍将焦点放在列表中的第一个项目上()-1)。

完整代码位于:https://github.com/MikeSys/ChatApp

<小时/>

主要 Activity

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

// Elementi Grafici-----------------------------------------

RecyclerView recyclerView = findViewById(R.id.recyclerView);
Button video = findViewById(R.id.video);
Button camera = findViewById(R.id.camera);
Button send = findViewById(R.id.send);
videoView =findViewById(R.id.rec);
final EditText editText = findViewById(R.id.editText);

// Media Controller----------------------------------------



// Layout Manager------------------------------------------------

linearLayoutManager = new LinearLayoutManager(MainActivity.this);
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);


// Adapter-----------------------------------------

if(dati.size()> 1){
adapter = new myAdapter(dati, this);
adapter.notifyDataSetChanged();
adapter.notifyItemInserted(dati.size()-1);
recyclerView.setAdapter(adapter);
//Setted recyclerView to scroll to the last item of the List
recyclerView.scrollToPosition(dati.size()-1);
}


else{
adapter = new myAdapter(dati,this);
recyclerView.setAdapter(adapter);
}
<小时/>

主 Activity 布局

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">


<android.support.v7.widget.RecyclerView
android:background="@drawable/sfondo"
android:foregroundGravity="center"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/editText"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="0dp"
app:stackFromEnd="true"/>


<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="160dp"
android:background="#0003A9F4"
android:hint="Scrivi"
android:padding="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_weight="3"
app:layout_constraintStart_toStartOf="parent" />


<Button
android:id="@+id/send"
android:layout_width="55dp"
android:layout_height="64dp"
android:background="@drawable/send"
app:layout_constraintBottom_toBottomOf="@+id/editText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/editText"
app:layout_constraintTop_toTopOf="@+id/editText"
app:layout_constraintVertical_bias="0.0"/>

<Button
android:id="@+id/camera"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:background="@drawable/camera"
app:layout_constraintBottom_toBottomOf="@+id/editText"
app:layout_constraintEnd_toStartOf="@+id/send"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="@+id/editText"
app:layout_constraintTop_toTopOf="@+id/editText"
app:layout_constraintVertical_bias="0.0" />

<Button
android:id="@+id/video"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/video"
app:layout_constraintEnd_toStartOf="@+id/camera"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="@+id/editText"
app:layout_constraintTop_toBottomOf="@+id/recyclerView" />

<小时/>

屏幕截图

enter image description here

最佳答案

使用

recyclerView.smoothScrollToPosition(position);

位置是最后插入的项目的索引。这会将您的 RecyclerView 焦点移至最后一个元素。

关于java - 将 recyclerView 焦点/滚动到最后一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com