본문 바로가기
수업내용

20230719 Andoroid

by titlejjk 2023. 7. 19.
<?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=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

안드로이드의 4대 컴포넌트

 

1.Activity -화면을 제어해주는 컨트롤러 역할

2.Service

3.BroadcastReceivier

4.ContentProvider

console로 확인해보는 activity의 라이프사이클

 

 

레이아웃을 만들기 위해 소스를 수정해보겠다. 아래의 코드가 기존코드인데 이것을

 

<?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=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

LinearLayout으로 변경해보겠다.

 

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</LinearLayout>

 

 

입력한 문자를 아래 textview에 출력해보기

 

package com.example.step01example;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       Button sendBtn = findViewById(R.id.sendBtn);
       sendBtn.setOnClickListener(this);

    }


    @Override
    public void onClick(View view) {
        //1.EditText에서 문자열 읽어오기
        EditText editText = findViewById(R.id.editTextText);
        String msg=editText.getText().toString();
        //2.TextView에 출력하기
        TextView textView = findViewById(R.id.textView);
        textView.setText(msg);

    }

}

 

 

ListView 만들어보기

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

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

이렇게 하면 ListView를 사용할 준비는 됐다.

 

이런식으로 출력할 데이터들을 직접적으로 넣을 순 없다. 중간에 필요한 배열어뎁터가 필요하다.

 

package com.example.step02listview;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

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

        //ListView의 참조값
        ListView listView = findViewById(R.id.listView);

        //ListView에 출력할 sampleData
        List<String> names=new ArrayList<>();
        names.add("김구라");
        names.add("해골");
        names.add("원숭이");
        for(int i = 0; i < 100; i++){
            names.add("아무개" + i);
        }
        
        //ListView에 연결할 어뎁터 객체
        //new ArrayAdapter<>(Context, layout resource, 모델)
        ArrayAdapter<String> adapter = new ArrayAdapter<>(
                this,
                android.R.layout.simple_list_item_1,
                names
        );
        //어뎁터를 ListView에 연결하기
        listView.setAdapter(adapter);
    }
}

 

setOnClickListener로는 정확히 어디를 클릭했는지는 알수 없다.

 

이럴 때 필요한 것은 처음 사용해보는 메서드가 필요하다

package com.example.step02listview;

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

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
	
    List<String> = names;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //ListView의 참조값
        ListView listView = findViewById(R.id.listView);

        //ListView에 출력할 sampleData
        List<String> names=new ArrayList<>();
        names.add("김구라");
        names.add("해골");
        names.add("원숭이");
        for(int i = 0; i < 100; i++){
            names.add("아무개" + i);
        }

        //ListView에 연결할 어뎁터 객체
        //new ArrayAdapter<>(Context, layout resource, 모델)
        ArrayAdapter<String> adapter = new ArrayAdapter<>(
                this,
                android.R.layout.simple_list_item_1,
                names
        );
        //어뎁터를 ListView에 연결하기
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        //i는 클릭한 item의 인덱스 값
        Log.d("MainActivity", "i: +" + i);
        //click한 item에 출력된 이름
        String clickedName=names.get(i);
        //토스트(가벼운메세지)출력
        Toast.makeText(this, clickedName, Toast.LENGTH_SHORT).show();
    }
}

 

'수업내용' 카테고리의 다른 글

20230720 Android CustomAdapter  (0) 2023.07.20
20230720 CSS3 flex2  (0) 2023.07.20
20230719 flex  (0) 2023.07.19
20230718 Poligon 응용해보기  (0) 2023.07.18
20230718 AndroidStudio설치/실행  (0) 2023.07.18

댓글