RecyclerView에서 데이터를 추가/삭제/편집할 수 있도록 구현한 예제입니다.
아래 포스트를 수정하여 진행합니다. 아래 포스트를 먼저 진행하세요.
Android RecyclerView 간단한 예제 http://webnautes.tistory.com/1214 |
데이터 추가는 기존대로 화면 아래쪽에 있는 버튼을 사용해서 이루어집니다.
RecyclerView의 특정 줄을 길게 터치시 컨텍스트 메뉴(context menu)에 편집/삭제 항목이 보이며 선택하면 해당 줄에 있는 데이터를 대상으로 편집/삭제가 진행됩니다.
실행 결과를 먼저 보여주고 이후 관련 코드를 설명하는 식으로 진행합니다.
1. 데이터 추가 2. 데이터 편집 3. 데이터 삭제 4. 코드 수정 |
최초작성 2018. 8. 9
최종작성 2019. 8. 22
1. 데이터 추가
실행시킨 후, 데이터 추가 버튼을 누르면
RecyclerView에 데이터 입력을 위한 다이얼로그가 보입니다. 원하는 내용을 입력 후, 삽입 버튼을 터치하면
RecyclerView에 해당 내용이 입력됩니다.
MainActivity.java
Button buttonInsert = (Button)findViewById(R.id.button_main_insert); // 1. 화면 아래쪽에 있는 데이터 추가 버튼을 클릭하면 // 2. 레이아웃 파일 edit_box.xml 을 불러와서 화면에 다이얼로그를 보여줍니다. AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); View view = LayoutInflater.from(MainActivity.this)
// 3. 다이얼로그에 있는 삽입 버튼을 클릭하면 ButtonSubmit.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 4. 사용자가 입력한 내용을 가져와서 // 5. ArrayList에 추가하고 Dictionary dict = new Dictionary(strID, strEnglish, strKorean ); // 6. 어댑터에서 RecyclerView에 반영하도록 합니다. mAdapter.notifyItemInserted(0); |
2. 데이터 편집
원하는 항목에서 길게 누르면 컨텍스트 메뉴가 보입니다. 편집부터 선택해보면
기존에 입력되어 있던 내용을 보여줍니다.
내용을 수정 후.. 수정 버튼을 선택해주면
해당 내용으로 변경된 것을 볼 수 있습니다.
CustomAdapter.java
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.CustomViewHolder> { // OnCreateContextMenuListener 리스너를 구현해야 합니다. public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener { public CustomViewHolder(View view) {
// 다이얼로그를 보여주기 위해 edit_box.xml 파일을 사용합니다. View view = LayoutInflater.from(mContext) // 6. 해당 줄에 입력되어 있던 데이터를 불러와서 다이얼로그에 보여줍니다. final AlertDialog dialog = builder.create(); // 7. 수정 버튼을 클릭하면 현재 UI에 입력되어 있는 내용으로 public void onClick(View v) { // 8. ListArray에 있는 데이터를 변경하고 // 9. 어댑터에서 RecyclerView에 반영하도록 합니다. notifyItemChanged(getAdapterPosition()); |
3. 데이터 삭제
다시 원하는 줄에서 길게 눌러 컨텍스트 메뉴가 보이게 한 후.. 삭제를 선택해주면
해당 줄이 삭제됩니다.
CustomAdapter.java
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.CustomViewHolder> { // OnCreateContextMenuListener 리스너를 구현해야 합니다. public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener { public CustomViewHolder(View view) {
. . . . . . . . . . . . . . . . .
// 6. ArratList에서 해당 데이터를 삭제하고 mList.remove(getAdapterPosition()); // 7. 어댑터에서 RecyclerView에 반영하도록 합니다. |
4. 코드 수정
레이아웃 edit_box.xml을 추가합니다.
다이얼로그에 보여줄 UI를 구성했습니다.
<?xml version="1.0" encoding="utf-8"?> |
background_color.xml
<?xml version="1.0" encoding="utf-8"?> |
MainActivity.java에 다음 코드를 다음처럼 수정합니다.
@Override //mAdapter = new CustomAdapter( mArrayList);
|
Button buttonInsert = (Button)findViewById(R.id.button_main_insert); |
CustomAdapter.java를 다음처럼 수정합니다.
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.CustomViewHolder> {
|
관련 포스트
Android RecyclerView 간단한 예제
https://webnautes.tistory.com/1214
Android RecyclerView 아이템 클릭 이벤트 구현
https://webnautes.tistory.com/1300
참고
https://gist.github.com/gauravat16/e8e03496a4056829e65dede3c236da28
'Android > 개념 및 예제' 카테고리의 다른 글
Android ViewPager 예제 - 좌우로 스와이프로 화면 전환 (0) | 2023.10.14 |
---|---|
Android용 HTML 파서(Parser) jsoup 사용해보기 (11) | 2021.01.26 |
Android RecyclerView 아이템 클릭 이벤트 구현 (8) | 2019.08.22 |
Android RecyclerView 간단한 예제 (32) | 2019.08.22 |
안드로이드 예제 - 알람 보여주기 위해 화면을 켜는 방법(PowerManager.WakeLock) (4) | 2019.08.16 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!