728x90
안녕하세요. 오늘은 버튼클릭을 통해 리사이클러뷰 최하단을 이동하는 예제를 보여드리겠습니다.
추후 버튼이 아니더라도 조건에 맞게 사용하시면 좋을거 같습니다.
먼저 메인액티비티 xml파일을 보여드리겠습니다. 간단하게 리사이클러뷰랑 버튼만 있는 파일입니다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="600dp"
android:id="@+id/recycler_view"
app:layout_constraintTop_toTopOf="parent"/>
<Button
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="최하단으로 이동"
app:layout_constraintTop_toBottomOf="@+id/recycler_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:id="@+id/move_to_down"/>
</androidx.constraintlayout.widget.ConstraintLayout>
그리고 다음은 리사이클러뷰 아이템 xml입니다. 저는 list_item.xml로 만들었습니다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/item_name"/>
</androidx.constraintlayout.widget.ConstraintLayout>
그리고 리사이클러뷰에 들어갈 데이터 클래스입니다.
public class ItemData {
public String getItem_name() {
return item_name;
}
public void setItem_name(String item_name) {
this.item_name = item_name;
}
public ItemData(String item_name){
this.item_name = item_name;
}
String item_name;
}
데이터 세팅 준비가 되었다면 리사이클러뷰 어댑터를 만들어 보겠습니다.
RecyclerViewAdapter.java
package com.song.stickcode;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
class RecyclerViewAdapta extends RecyclerView.Adapter<RecyclerViewAdapta.ViewHolder> {
public ArrayList<ItemData> itemDatas;
public class ViewHolder extends RecyclerView.ViewHolder {
TextView item_name_view;
public ViewHolder(View itemView) {
super(itemView);
item_name_view = itemView.findViewById(R.id.item_name);
}
}
RecyclerViewAdapta(ArrayList<ItemData> itemDatas){
this.itemDatas = itemDatas;
}
@Override
public RecyclerViewAdapta.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item, parent, false);
return new RecyclerViewAdapta.ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerViewAdapta.ViewHolder holder, int position) {
holder.item_name_view.setText(itemDatas.get(position).getItem_name());
}
@Override
public int getItemCount() {
return itemDatas.size() ;
}
}
마지막으로 메인액티비티 클래스입니다.
public class MainActivity extends AppCompatActivity {
Button move_to_down_btn;
RecyclerView recyclerView;
Context context;
ArrayList<ItemData> itemDatas = new ArrayList<>();
RecyclerViewAdapta recyclerViewAdapta;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
move_to_down_btn = findViewById(R.id.move_to_down);
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
for (int i = 0; i < 7; i++) {
String item_name = "아이템" + i;
itemDatas.add(new ItemData(item_name));
}
recyclerViewAdapta = new RecyclerViewAdapta(itemDatas);
recyclerView.setAdapter(recyclerViewAdapta);
move_to_down_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
recyclerView.scrollToPosition(itemDatas.size()-1);
}
});
}
}
scrollToPosition을 통해 리사이클러뷰의 위치를 이동할 수 있습니다.
결과 보여드리겠습니다.
'안드로이드 자바' 카테고리의 다른 글
[Java][Android] TextView 클릭 시 효과(ripple)주기 (0) | 2023.08.01 |
---|---|
[Android][Java] 아두이노 블루투스 모듈과 통신하는법 (0) | 2023.07.31 |
[Android][Java]엑셀 파일 등록,읽기 (0) | 2023.07.21 |
[Android][JAVA]Shimmer 사용한 스켈레톤 UI 로딩화면 구현 (0) | 2023.07.18 |
[Java] awt 테트리스 모듈화 - Figure (0) | 2023.07.17 |