1.5/Android

RecyclerView

하례은 2020. 7. 22. 19:53

요즘엔 listView보다 RecyclerView를 더 많이 쓴다고 한다. 그래서 전에 프로젝트를 했을때 ListView를 썼었는데 이번엔 RecyclerView를 사용해보았다. 간단한 예제로 체크리스트 앱을 만들어보았다.

 

 

 

 

 

 

RecyclerView 사용전!! 

 

나는 깔려있어서 아이콘이 없지만 원래는 다운로드 아이콘이 있다. 먼저 깔아주고 사용하자! 아이콘을 누르면 <Sync Now>를 누를필요없이 저절로 된다!

 

 

 

 

 

 

1. MainActivity.java

package com.example.listapp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private CheckBoxAdapter adapter;
    private ArrayList arrayList;
    private SimpleDateFormat format = new SimpleDateFormat("yyyy/M/d");


    TextView day;
    Button plus;
    EditText entry;




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

        day = (TextView) findViewById(R.id.txtDay);
        plus = (Button) findViewById(R.id.btnPlus);
        entry = (EditText)findViewById(R.id.edtText);


        mRecyclerView = (RecyclerView)findViewById(R.id.recyclView);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(linearLayoutManager);

        arrayList = new ArrayList<>();

        adapter = new CheckBoxAdapter(arrayList);
        mRecyclerView.setAdapter(adapter);

        Date nowData = new Date();
        String time = format.format(nowData);
        day.setText(time);



        plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String title = entry.getText().toString();

                CheckData checkData = new CheckData(title);
                arrayList.add(checkData);

                adapter.notifyDataSetChanged();


            }
        });

    }



}

 

2. CheckBoxAdapter.java

package com.example.listapp;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class CheckBoxAdapter extends RecyclerView.Adapter{

    private ArrayList listData = new ArrayList();



    @NonNull
    @Override
    public CheckBoxAdapter.ltemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item,parent,false);
        ltemViewHolder viewHolder = new ltemViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final CheckBoxAdapter.ltemViewHolder holder, int position) {
        holder.check.setText(listData.get(position).getTitle());
        holder.check.setOnClickListener(new CheckBox.OnClickListener(){
            @Override
            public void onClick(View v) {
                if(holder.check.isChecked()){
                    holder.check.setChecked(true);
                }
                else{
                    holder.check.setChecked(false);
                }
            }
        });
    }

    public CheckBoxAdapter(ArrayList listData){
        this.listData = listData;
    }

    @Override
    public int getItemCount() {
        return (null != listData ? listData.size() : 0);
    }


    public class ltemViewHolder extends RecyclerView.ViewHolder {
        protected CheckBox check;


        public ltemViewHolder(@NonNull View itemView) {
            super(itemView);
            check =(CheckBox) itemView.findViewById(R.id.check);

        }

    }
}

 

3. CheckData

package com.example.listapp;

public class CheckData {
    private String title;

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public CheckData(String title) {
        this.title = title;
    }
}

 

'1.5 > Android' 카테고리의 다른 글

constraintLayout과 RelativeLayout의 차이점  (4) 2021.03.10
issue : Tablayout 사용시 문제점  (0) 2021.03.10
SQLite  (0) 2021.01.29
오픈API를 이용한 XML파싱  (0) 2020.10.26
멀티 스레드를 이용한 고기굽기게임  (0) 2020.10.19