> 배운 기능
1. RecycleView 리스트에 EditText로 텍스트를 받아 add 해주기
2. 버튼 setOnClickListener를 통헤 list에서 delete 실행
Listactivity.java
package com.example.todoapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.myapplication.R;
import java.util.ArrayList;
public class ListActivity extends AppCompatActivity {
Button main_bnt;
EditText main_input;
private ArrayList<TodolistData> todolistDataArrayList;
private TodolistAdapter todolistAdapter;
@SuppressLint("WrongViewCast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.main_list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
todolistDataArrayList = new ArrayList<>();
todolistAdapter = new TodolistAdapter(todolistDataArrayList);
recyclerView.setAdapter(todolistAdapter);
main_bnt = (Button) findViewById(R.id.main_bnt);
main_input = findViewById(R.id.main_input);
main_bnt.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
String todoString = main_input.getText().toString();
if( todoString == null || "".equals(todoString)){
Toast.makeText(getApplicationContext(),"할일을 입력해주세요.", Toast.LENGTH_SHORT).show();
return;
}
TodolistData todolistData = new TodolistData(todoString);
todolistDataArrayList.add(todolistData);
todolistAdapter.notifyDataSetChanged();
main_input.setText("");
}
});
}
}
TodolistAdapter.java
package com.example.todoapplication;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.myapplication.R;
import java.util.ArrayList;
public class TodolistAdapter extends RecyclerView.Adapter<TodolistAdapter.ViewHolder> {
private ArrayList<TodolistData> list;
public TodolistAdapter(ArrayList<TodolistData> list) {
this.list = list;
}
@NonNull
@Override
public TodolistAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.mainitem, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull TodolistAdapter.ViewHolder holder, int position) {
holder.item_title.setText(list.get(position).getTodoitem());
holder.item_btn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
list.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
//현재있는 postion을 받아와서 삭제
}
}
);
}
public int getItemCount() {
return ( null != list ? list.size() : 0 );
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView item_title;
Button item_btn;
public ViewHolder(@NonNull View itemView) {
super(itemView);
item_title = itemView.findViewById(R.id.item_title);
item_btn = itemView.findViewById(R.id.item_btn);
}
}
}
TodolistData.java
package com.example.todoapplication;
public class TodolistData {
public TodolistData(String todoitem) {
this.todoitem = todoitem;
}
public String getTodoitem() {
return todoitem;
}
public void setTodoitem(String todoitem) {
this.todoitem = todoitem;
}
private String todoitem;
}
activity_list.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="com.example.todoapplication.ListActivity">
<TextView
android:id="@+id/main_title"
android:layout_width="171dp"
android:layout_height="29dp"
android:layout_marginTop="27dp"
android:layout_marginBottom="20dp"
android:text="TodoList"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintBottom_toTopOf="@+id/main_list"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_list"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toTopOf="@+id/main_bnt"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_title">
</androidx.recyclerview.widget.RecyclerView>
<EditText
android:id="@+id/main_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintBottom_toBottomOf="@+id/main_bnt"
app:layout_constraintEnd_toStartOf="@+id/main_bnt" />
<Button
android:id="@+id/main_bnt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="66dp"
android:layout_marginBottom="23dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_list" />
</androidx.constraintlayout.widget.ConstraintLayout>
mainitem.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/item_title"
android:layout_width="267dp"
android:layout_height="29dp"
android:layout_weight="1"
android:text="TextView" />
<Button
android:id="@+id/item_btn"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#FFFFFF"
android:text="Button"
/>
</LinearLayout>
'개발 > Java' 카테고리의 다른 글
[Spring] Infearn 스프링 입문 필기 1 - 개념 학습 (1) | 2022.12.06 |
---|---|
[Android 개발] Todo List 메인 화면 제작 스타일 적용 (0) | 2022.12.06 |
[Android 개발] 안드로이드 RecyclerView(Adapter) 예제 코드 설명 (0) | 2022.11.16 |
[Android 개발] RecyclerView(Adapter) 예제 코드 (0) | 2022.11.16 |
[Android 개발] 간단한 계산 기능 구현 (0) | 2022.11.13 |