커스텀 리스트뷰를 생성하는 방법입니다. 파이어베이스와 연동하였습니다.
리스트를 추가하고싶다면 따로 버튼을 만들어서 추가하시면 됩니다.
기본적인 코드와 동작을 확인하시면 좋을것같습니다.
리스트뷰 객체.java
public class memo_list {
String mname;
String mcontent;
public memo_list(){}
public String getmname() {
return mname;
}
public void setmname(String mname) {
this.mname = mname;
}
public String getmcontent() {
return mcontent;
}
public void setmcontent(String mcontent) {
this.mcontent = mcontent;
}
public memo_list(String mname, String mcontent){
this.mname = mname;
this.mcontent = mcontent;
}
}
메인화면.java
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
private ArrayList<memo_list> arrayList;
private FirebaseDatabase database;
private DatabaseReference databaseReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
arrayList = new ArrayList<>();
database = FirebaseDatabase.getInstance();
databaseReference = database.getReference();
databaseReference.child("memo").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
arrayList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
memo_list memo_list = snapshot.getValue(memo_list.class);
arrayList.add(memo_list);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
adapter = new memo_Adapter(arrayList, this);
recyclerView.setAdapter(adapter);
}
}
어댑터.java
public class memo_Adapter extends RecyclerView.Adapter<memo_Adapter.CustomViewHoler> {
private ArrayList<memo_list> arrayList;
private Context context;
private FirebaseDatabase database;
private DatabaseReference databaseReference;
public memo_Adapter(ArrayList<memo_list> arrayList, Context context) {
this.arrayList = arrayList;
this.context = context;
}
@NonNull
@Override
public CustomViewHoler onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.memo_list, parent, false);
CustomViewHoler holder = new CustomViewHoler(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final CustomViewHoler holder, int position) {
holder.mname.setText(arrayList.get(position).getmname());
holder.mcontent.setText(arrayList.get(position).getmcontent());
}
public class CustomViewHoler extends RecyclerView.ViewHolder {
TextView mname;
TextView mcontent;
public CustomViewHoler(@NonNull View itemView) {
super(itemView);
this.mname = itemView.findViewById(R.id.mname);
this.mcontent = itemView.findViewById(R.id.mcontent);
}
}
}
리스트.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/gray"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_margin="10dp"
android:layout_gravity="center"
android:text="메모이름"
android:textColor="@color/white"
android:id="@+id/mname"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:visibility="invisible"
android:id="@+id/mcontent"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="2dp"
android:orientation="horizontal"
android:background="@color/white"></LinearLayout>
</LinearLayout>
메인화면.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:background="@color/gray">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
: 편의를 위해 리니어 레이아웃 안에 감쌌습니다. androidx.coordinatorlayout속에 만든 이유는.. 제가 플로팅 버튼을 같이 사용하기 때문입니다. 애초에 리니어로 만드셔도 상관없습니다.