kotlin은 이전에 특별히 바인딩이라는 것을 하지않아도 자동으로 되었었는데 2020년 초부터 binding을 해야하는 것으로 바뀌었고 강좌들은 이전 것과 이후 것이 혼재되어 헷갈리게 되어 있다.

 

view binding만 보면...

 

build.gradle ( module) 파일에

 

plugins {
      id 'com.android.application'
      id 'kotlin-android'
      id 'kotlin-android-extensions'
}

 

android {
...
    buildFeatures {
          viewBinding =true
    }

}

 

를 추가하고 왼쪽 위에 sync now를 눌러 싱크를 맞춘다.

 

그리고,  

 

<LinearLayout
        ...
       
tools:viewBindingIgnore="true" >
    ...
</LinearLayout>

 

위의 내용을 activity_main등의 레이아웃 파일에 넣으면 바인딩이 되지않으니 넣지말라!!

 

==========activity_main.xml====================

<?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"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello world"
android:id="@+id/myBtn"/>
</LinearLayout>

 

=============== MainActivity.kt============

 

import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.jstudio.coroutin.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
   private lateinit var binding:ActivityMainBinding

   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      binding = ActivityMainBinding.inflate(layoutInflater)
      setContentView(binding.root)

      binding.myBtn.text = "button works"
   }
}

'IT 통신 수학 과학 > 자바 안드로이드' 카테고리의 다른 글

React 설치 방법  (0) 2022.02.28
Response Status Code  (0) 2021.11.02
[Android/Kotlin] DataBinding(데이터바인딩)  (0) 2021.03.20
Android Studio : WebView 구현 오류 문제.  (0) 2021.02.22
안드로이드 파일 입출력 및 삭제  (0) 2020.12.16
AdapterView 다중선택  (0) 2020.11.02
AdapterView2  (0) 2020.11.01
ArrayAdapter  (0) 2020.10.28

package com.jproject.mysturdy;

import androidx.appcompat.app.AppCompatActivity;

import android.app.LauncherActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.lang.reflect.Array;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
   
ArrayList<String> Items = new ArrayList<String>();
   
ArrayAdapter<String> Adapter;
   
ListView list;

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

       
Items.add("Frist");
       
Items.add("Second");
       
Items.add("Third");
       
Items.add("Fourth");
       
Items.add("Fifth");

       
Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, Items);

       
list = (ListView) findViewById(R.id.list);
       
list.setAdapter(Adapter);
       
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }

   
public void mOnclick(View v) {
       
EditText ed = (EditText)findViewById(R.id.newitem);
       
int pos;
       
String text;
       
SparseBooleanArray sb;

       
switch(v.getId()){
           
case R.id.add:
               
text = ed.getText().toString();
               
if (text.length() != 0){
                   
Items.add(text);
                   
ed.setText("");
                    
Adapter.notifyDataSetChanged();
                }
               
break;
               
case R.id.change:
                   
sb = list.getCheckedItemPositions();
                   
text = ed.getText().toString();
                   
pos = list.getCheckedItemPosition();
                   
if (sb.size() != 0){
                       
for (int i = list.getCount()-1;i>=0;i--){
                           
if(sb.get(i)){
                               
Items.remove(i);
                                
Items.add(i,text);
                            }
                        }

                       
list.clearChoices();
                       
ed.setText("");
                       
Adapter.notifyDataSetChanged();
                    }
                    
break;

           
case R.id.delete:

               
pos = list.getCheckedItemPosition();
               
sb = list.getCheckedItemPositions();

               
if (sb.size() != 0){
                   
for (int i = list.getCount()-1;i>=0;i--){
                       
if(sb.get(i)){
                           
Items.remove(i);
                        }
                    }

                   
list.clearChoices();
                   
Adapter.notifyDataSetChanged();
                }
                
break;
        }
    }
}

 

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

    <
EditText
       
android:id="@+id/newitem"
       
android:layout_width="wrap_content"
       
android:layout_height="120px"
       
/>
    <
LinearLayout
       
android:orientation="horizontal"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content">
        <
Button
           
android:id="@+id/add"
           
android:layout_width="8px"
           
android:layout_weight="3"
           
android:layout_height="wrap_content"
           
android:text="add"
           
android:onClick="mOnclick"
           
/>
        <
Button
           
android:id="@+id/change"
           
android:layout_width="8px"
           
android:layout_weight="3"
           
android:layout_height="wrap_content"
           
android:text="change"
           
android:onClick="mOnclick"
       
/>
        <
Button
            
android:id="@+id/delete"
           
android:layout_width="8px"
           
android:layout_weight="3"
           
android:layout_height="wrap_content"
           
android:text="delete"
           
android:onClick="mOnclick"
           
/>
    </
LinearLayout>
    <
ListView
       
android:id="@+id/list"
       
android:layout_width="match_parent"
       
android:layout_height="500px"
       
/>
</
LinearLayout>

 

 

'IT 통신 수학 과학 > 자바 안드로이드' 카테고리의 다른 글

안드로이드 kotlin view binding  (0) 2021.10.18
[Android/Kotlin] DataBinding(데이터바인딩)  (0) 2021.03.20
Android Studio : WebView 구현 오류 문제.  (0) 2021.02.22
안드로이드 파일 입출력 및 삭제  (0) 2020.12.16
AdapterView2  (0) 2020.11.01
ArrayAdapter  (0) 2020.10.28
Android popmenu  (0) 2020.09.08
컨텍스트 메뉴  (0) 2020.09.06

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

    <
EditText
       
android:id="@+id/newitem"
       
android:layout_width="wrap_content"
       
android:layout_height="120px"
       
/>
    <
LinearLayout
       
android:orientation="horizontal"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content">
        <
Button
           
android:id="@+id/add"
           
android:layout_width="8px"
            
android:layout_weight="3"
           
android:layout_height="wrap_content"
           
android:text="add"
           
android:onClick="mOnclick"
           
/>
        <
Button
           
android:id="@+id/change"
           
android:layout_width="8px"
           
android:layout_weight="3"
           
android:layout_height="wrap_content"
           
android:text="change"
           
android:onClick="mOnclick"
       
/>
        <
Button
           
android:id="@+id/delete"
           
android:layout_width="8px"
           
android:layout_weight="3"
           
android:layout_height="wrap_content"
           
android:text="delete"
           
android:onClick="mOnclick"
           
/>
    </
LinearLayout>
    <
ListView
       
android:id="@+id/list"
       
android:layout_width="match_parent"
       
android:layout_height="500px"
       
/>
</
LinearLayout>

 

 

package com.jproject.mysturdy;

import androidx.appcompat.app.AppCompatActivity;

import android.app.LauncherActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.lang.reflect.Array;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
   
String[] arGeneral = {"김유신","이순신","강감찬","을지문덕"};
   
ArrayList<String> Items = new ArrayList<String>();
   
ArrayAdapter<String> Adapter;
   
ListView list;

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

       
Items.add("Frist");
       
Items.add("Second");
       
Items.add("Third");

       
Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, Items);

       
list = (ListView) findViewById(R.id.list);
       
list.setAdapter(Adapter);
       
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

   
public void mOnclick(View v) {
       
EditText ed = (EditText)findViewById(R.id.newitem);
       
int pos;
       
String text;
       
switch(v.getId()){
           
case R.id.add:
               
text = ed.getText().toString();
               
if (text.length() != 0){
                   
Items.add(text);
                   
ed.setText("");
                   
Adapter.notifyDataSetChanged();
                }
               
break;
               
case R.id.change:
                   
text = ed.getText().toString();
                   
pos = list.getCheckedItemPosition();
                   
if (text.length() != 0|pos != ListView.INVALID_POSITION){
                       
Items.remove(pos);
                       
Items.add(pos,text);
                       
ed.setText("");
                       
Adapter.notifyDataSetChanged();
                    }
                    
break;

           
case R.id.delete:

               
pos = list.getCheckedItemPosition();
               
if (pos != ListView.INVALID_POSITION){
                   
Items.remove(pos);
                   
list.clearChoices();
                   
Adapter.notifyDataSetChanged();
                }
               
break;
        }
    }
}

 

 

 

안드로이드에서는  보안과 관련된 중요한 사항에 사용자의 허가를 받아야 하는데, 허가가 필요한 사항응 반드시 manifest에 명시해야하는데 빨간색과 같이 표시하면 된다.

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       
package="com.example.snazzyapp">

   
<uses-permission android:name="android.permission.INTERNET"/>
   
<!-- other permissions go here -->

   
<application ...>
        ...
   
</application>
</manifest>

 

한편 사용자의 허가를 받아야하는 서비스는 아래 표와 같으며 이들 서비스를 사용할 때는 위의 manifest에 반드시 명시해야하며 한번 허가받으면 다시 받을 필요가 없으나 사용자는 언제든 허가를 취소할 수 있다. 그리고, 권한이 없을 때는 사용자에게 권한을 요청해야만 한다.

 

서 비 스   이 름 설          명
LAYOUT_INFLATER_SERVICE 전개자
AUDIO_SERVICE 오디오 관리자
DOWNLOAD_SERVICE 다운로드 관리자
VIBRATOR_SERVICE 진동관리자
LOCATION_SERVICE 위치 서비스 관리자
POWER_SERVICE 전원 관리자

 

 

 

 

String input="5.2", output;

Double ans = 0;

 

ans=Double.parseDouble(input);

//if input is not String type, it throws NumberFormatException error

//만일 input이 String Type이 아니면 NumberFormatExecption error를 발생시킨다.

//if input is null, it throws NullpointException error

//만일 input이 Null이면 NullpointException error를 발생시킨다.

함수는 Double형을 반환한다.

 

output=Double.toString(ans*2);

//ans*2의 값을 ASCII의 형태의 문자열로 반환한다.

 

Toast.makeText(MainActivity.this, output, Toast.LENGTH_SHORT).show();

//안드로이드에서 간단한 문자열(output)로 화면에 표시

 

10.4

 

 

+ Recent posts