프로젝트 [코테 복습] - Task 완료 & TouchEvent 구현

유의선·2024년 5월 19일

코테 복습 프로젝트

목록 보기
11/13

Task를 끝내 데이터베이스와 recyclerView에서 Task를 삭제하는 기능과
recyclerView의 Item을 클릭하면 해당 Task에 저장된 풀이 링크로 이동하는 기능을 구현했습니다.


MainActivity에 다음의 코드를 추가했습니다.

public class MainActivity extends AppCompatActivity implements onItemSwipeListener {

	...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        
        ...
        
        // set recyclerView
        adapter = new TaskAdapter();
        adapter.setOnItemClickListener(new onTaskClickListener() {
            @Override
            public void onItemClick(TaskAdapter.ViewHolder holder, View view, int position) {
                Task task = adapter.getItem(position);

                TaskDatabase database = TaskDatabase.getInstance(getApplicationContext());
                String SQL = "SELECT ADDRESS FROM " + database.TABLE_USERS + " WHERE _id = " + task.getId();
                if(database != null){
                    Cursor cursor = database.rawQuery(SQL);

                    cursor.moveToNext();
                    String address = cursor.getString(0);
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(address));
                    startActivity(intent);

                    cursor.close();
                }
            }
        });

        ...
        
    }

    ...

    // implements onItemSwipeListener removeItem
    @Override
    public void removeItem(int position) {
        Task task = adapter.getItem(position);

        TaskDatabase database = TaskDatabase.getInstance(this);
        String SQL = "DELETE FROM " + database.TABLE_USERS + " WHERE _id = " + task.getId();
        if(database != null){
            database.execSQL(SQL);
            loadTaskListData();
        }
    }

removeItem 메소드를 Override해 그 안에 Task를 삭제하는 코드를 구현했습니다.

    @Override
    public void removeItem(int position) {
        Task task = adapter.getItem(position);

        TaskDatabase database = TaskDatabase.getInstance(this);
        String SQL = "DELETE FROM " + database.TABLE_USERS + " WHERE _id = " + task.getId();
        if(database != null){
            database.execSQL(SQL);
            loadTaskListData();
        }
    }

데이터베이스에서 해당 Item의 id를 가진 데이터를 삭제하고, recyclerView를 다시 불러오도록 만들었습니다.

adapteronItemClick 메소드 안에 저장된 링크의 웹페이지를 여는 코드를 작성했습니다.

        adapter = new TaskAdapter();
        adapter.setOnItemClickListener(new onTaskClickListener() {
            @Override
            public void onItemClick(TaskAdapter.ViewHolder holder, View view, int position) {
                Task task = adapter.getItem(position);

                TaskDatabase database = TaskDatabase.getInstance(getApplicationContext());
                String SQL = "SELECT ADDRESS FROM " + database.TABLE_USERS + " WHERE _id = " + task.getId();
                if(database != null){
                    Cursor cursor = database.rawQuery(SQL);

                    cursor.moveToNext();
                    String address = cursor.getString(0);
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(address));
                    startActivity(intent);

                    cursor.close();
                }
            }
        });

터치한 Item의 id로 데이터를 검색 해, 해당 데이터에 저장된 링크를 Intent를 이용해 웹페이지를 열도록 만들었습니다.


저장된 링크 열기


Task 삭제

0개의 댓글