PROGRAMMING

ListView 본문

Android

ListView

Raccoon2125 2020. 11. 4. 12:48
package com.example.a201104_1;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity { // extends ListActivity {

    ListView listView;

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

        listView = (ListView) findViewById(R.id.listView);

        // add 메서드를 사용한 listView 생성
        /*ArrayList<String> data = new ArrayList<>();
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
        listView.setAdapter(adapter);

        data.add("사과");
        data.add("딸기");
        data.add("바나나");
        data.add("포도");
        data.add("멜론");
        data.add("키위");
        data.add("오렌지");
        adapter.notifyDataSetChanged();*/

        // add 메서드와 루프를 사용한 listView 생성
        /*String[] fruits = {"사과", "딸기", "바나나", "포도", "멜론", "키위", "오렌지"};
        ArrayList<String> data2 = new ArrayList<>();
        for (int i = 0; i != fruits.length; i++)
            data2.add(fruits[i]);
        ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data2);
        listView.setAdapter(adapter2);
        adapter2.notifyDataSetChanged();*/

        // String 형태의 배열을 바로 받아서 listView 생성
        /*String[] fruits2 = {"사과", "딸기", "바나나", "포도", "멜론", "키위", "오렌지"};
        ArrayAdapter<String> adapter3 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, fruits2);
        listView.setAdapter(adapter3);*/

        // ListActivity를 extends
        /*String[] fruits3 = {"사과", "딸기", "바나나", "포도", "멜론", "키위", "오렌지"};
        ArrayAdapter<String> adapter4 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, fruits3);
        setListAdapter(adapter4);*/

        // simple_list_item_checked 사용
        String[] fruits4 = {"사과", "딸기", "바나나", "포도", "멜론", "키위", "오렌지"};
        // simple_list_item_1, 2, checked, single_choice, multiple_choice
        ArrayAdapter<String> adapter5 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_multiple_choice, fruits4);
        // simple_list_item_check, single_choice 의 경우 선택을 하나로 제한하기 위해서 모드 설정
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        listView.setAdapter(adapter5);

        // AdapterView 에서 이벤트를 받아들임 !!
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            // Logcat (terminal) 띄울 class(or activity) 설정
            private static final String TAG = "MainActivity";

            // custom for loop
            /*int[] items = new int[fruits4.length];
            for (int i = 0; i != fruits4.length; i++)
                items[i] = 0;*/

            // teacher ver.2
            String str_t = "";
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CheckedTextView v = (CheckedTextView) view;
                boolean currentCheck = v.isChecked();

                // teacher ver.2
                if (currentCheck == true) {
                    str_t += (fruits4[position]+" ");
                } else {
                    str_t = str_t.replace(String.format("%s ", fruits4[position]), "");
                }
                Toast.makeText(getApplicationContext(), str_t + "선택" , Toast.LENGTH_SHORT).show();
                // 프로그램 아래 Logcat (terminal) 에 내용 띄우는 문장
                Log.d(TAG, str_t);

                // teacher
                /*CheckedTextView v = (CheckedTextView) view;
                boolean currentCheck = v.isChecked();
                String str = String.format("%s", currentCheck);
                Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();*/

                // custom
                /*if (items[position] == 0) {
                    Toast.makeText(getApplicationContext(), item + "선택", Toast.LENGTH_SHORT).show();
                    items[position]++;
                }
                else if (items[position] == 1)
                {
                    Toast.makeText(getApplicationContext(), item + "해제", Toast.LENGTH_SHORT).show();
                    items[position] = 0;
                }*/
            }
        });
    }
}
<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/listViewLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

'Android' 카테고리의 다른 글

CustomListView  (0) 2020.11.04
ListViewEdit  (0) 2020.11.04
버튼-백그라운드컬러  (0) 2020.11.03
어플 접속화면(feat. 이상형월드컵)  (0) 2020.10.30
이상형월드컵(ver. teacher)  (0) 2020.10.30
Comments