Sponsored By
















 

앱이름 바꾸기와 앱이미지(아이콘) 바꾸는 방법임.

 

 

 

 

Manifest로 들어가서 

 

android:icon="@+id/앱 이미지지정"

<Activity 아래에 있는

android:label="앱 이름 지정"

 

 

 

 

실행시키면 변경된 것을 확인 할 수 있다.

 

 

실전에서 많이 쓰이는 참조형 리스트뷰 에대한 사용 방법임.

 

 

이전 포스팅과 코드가 많이 겹치므로 이어서 사용함.

(※ 이전포스팅 주소 : https://asterisco.tistory.com/45)

 

 

 

 

 

 

 

 

 

00. 자바위에 마우스오른쪽버튼 클릭 - New - JavaClass 클릭.







01. 이름을 부여하고 OK버튼 클릭 (FruitsItem이라고 지음)







02. 다음과 같이 입력하고 마우스 오른쪽 버튼클릭 - Generate 클릭

public class FruitsItem{

String names;

String ages;

}







03. Getter and Setter 로 불러들여온다.







04. 두개다 선택하고 클릭







05. 다시한번 바탕화면에서 마우스 오른쪽버튼클릭 - Generate 클릭







06. 이번에는 Constructor를 클릭







07. 이번에도 두개다 선택한후 OK버튼을 클릭한다.







08. 다음과 같이 나타나는데 디폴트생성자만 하나 더 추가해주자.







09. 메인Script로 와서 지정되었던 값들을 밖으로 빼고 ArrayList를 사용하여 이 값들을 참조하자.







10. 중간에 addItem 을 하나 만들어주고 마지막부분을 효율을 높여주기위해 다음과 같이 수정한다.

@Override

public View getView(int position, View convertView, ViewGroup parent) {

       FruitsItemView view = null;

       if (convertView == null){

           view = new FruitsItemView(getApplicationContext());

       } else {

           view = (FruitsItemView) convertView;

       }

       FruitsItem curItem = items.get(position);

       view.setName(curItem.getName());

       view.setAge(curItem.getAge());

       return view;

   }







11. 실행시켜본다.







12. 정상적으로 작동됨을 확인 할 수 있다.

 

 

 

 

참고: 메인자바스크립트 전체코드임.

 

 

package com.example.joey.mylistview;

 

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ListView;

 

import java.util.ArrayList;

 

public class MainActivity extends AppCompatActivity {

 

    ListView listView;

    FruitsAdapter fruitsAdapter;

 

    String[] names = {"사과", "바나나", "딸기", "메론", "오렌지"};

    String[] ages = {"21", "23", "25", "68", "10"};

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

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

        fruitsAdapter = new FruitsAdapter();

        fruitsAdapter.addItem(new FruitsItem(names[0], ages[0]));

        fruitsAdapter.addItem(new FruitsItem(names[1], ages[1]));

        fruitsAdapter.addItem(new FruitsItem(names[2], ages[2]));

        fruitsAdapter.addItem(new FruitsItem(names[3], ages[3]));

        fruitsAdapter.addItem(new FruitsItem(names[4], ages[4]));

        listView.setAdapter(fruitsAdapter);

    }

 

    class FruitsAdapter extends BaseAdapter {

        ArrayList<FruitsItem> items = new ArrayList<FruitsItem>();

 

        @Override

        public int getCount() {

            return items.size();

        }

 

        public void addItem(FruitsItem item){

            items.add(item);

        }

 

        @Override

        public Object getItem(int position) {

            return items.get(position);

        }

 

        @Override

        public long getItemId(int position) {

            return position;

        }

 

        @Override

        public View getView(int position, View convertView, ViewGroup parent) {

 

            FruitsItemView view = null;

            if (convertView == null){

                view = new FruitsItemView(getApplicationContext());

            } else {

                view = (FruitsItemView) convertView;

            }

            FruitsItem curItem = items.get(position);

 

            view.setName(curItem.getName());

            view.setAge(curItem.getAge());

 

            return view;

        }

 

    }

}

 

텍스트 대신에 레이아웃형태를 리스트뷰 시키는 방법임.

 

 

이전 리스트뷰 코드와 많이 겹쳤기때문에 이어서 사용했슴.

(※ 이전 리스트뷰 주소 참고 - https://asterisco.tistory.com/44)

 

 

 

 

 

 

 

 

 

00. res밑에 layout 마우스오른쪽버튼 클릭 - New - resource Files 클릭







01. 이름을 지어주고 OK버튼 클릭. (fruits_item.xml이라고 지어줬다.)







02. 코드를 입력하고 아래쪽에 디자인 텝을 눌러 디자인을 확인해보자.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

 

    <ImageView

        android:layout_width="100dp"

        android:layout_height="100dp"

        android:src="@mipmap/ic_launcher" />

 

    <LinearLayout

        android:orientation="vertical"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_gravity="center_vertical">

 

        <TextView

            android:id="@+id/nameTextView"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:textSize="30dp"

            android:textColor="#ff000000"/>

 

        <TextView

            android:id="@+id/ageTextView"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:textSize="25dp"

            android:textColor="#ff0000ff"/>

 

    </LinearLayout>

</LinearLayout>







03. 저런식으로 들어가게된다. 실제 이미지 옆에 마우스를 가져다놓으면 리스트뷰의 위치를 확인 할 수 있다.







04. 메인자바Script위에서 마우스오른쪽버튼클릭 - New - JavaClass 클릭







05. 방금만든 xml파일과 연결시켜주기위해 이름을 비슷하게 지어주고 OK버튼 클릭.







06. class FruitsItemView extends LinearLayout {}라고 치고 Alt+Enter 를 쳐서 기본 constructure를 불러오자.







07. 연결시켜주기 위해서 fruits_item.xml의 텍스트뷰에 아이디를 입력하자.







08. FruitsItemView Script에 다음과 같이 코드를 입력하자.

package com.example.joey.mylistview;

import ...

class FruitsItemView extends LinearLayout {

 

    TextView nameTextView;

    TextView ageTextView;

 

    public FruitsItemView(Context context) {

        super(context);

        init(context);

    }

    public FruitsItemView(Context context, AttributeSet attrs) {

        super(context, attrs);

        init(context);

    }

    private void init(Context context){

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        inflater.inflate(R.layout.fruits_item, this, true);

        nameTextView = (TextView) findViewById(R.id.nameTextView);

        ageTextView = (TextView) findViewById(R.id.ageTextView);

    }

    public void setName(String name){

        nameTextView.setText(name);

    }

    public void setAge(String age){

        ageTextView.setText(age);

    }

}







09. 메인Script로 와서 로딩해주자.

package com.example.joey.mylistview;

import ...

public class MainActivity extends AppCompatActivity {

    ListView listView;

    FruitsAdapter fruitsAdapter;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

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

        fruitsAdapter = new FruitsAdapter();

        listView.setAdapter(fruitsAdapter);

    }

    class FruitsAdapter extends BaseAdapter {

        String[] names = {"사과", "바나나", "딸기", "메론", "오렌지"};

        String[] ages = {"21", "23", "25", "68", "10"};

        @Override

        public int getCount() {

            return names.length;

        }

        @Override

        public Object getItem(int position) {

            return names[position];

        }

        @Override

        public long getItemId(int position) {

            return position;

        }

        @Override

        public View getView(int position, View convertView, ViewGroup parent) {

 

            FruitsItemView view = new FruitsItemView(getApplicationContext());

            view.setName(names[position]);

            view.setAge(ages[position]);

            return view;

        }

    }

}







10. 실행시켜보자.







11. 정상적으로 작동되었음을 확인 할 수 있다.

 

간단하게 텍스트를 리스트뷰 로 불러오는 방법임.

 

 

리스트뷰는 어댑터에서 관리하기때문에 데이터를 바로 리스트뷰에 연결 하려하지말고 어댑터로 연결을 먼저 하는게 중요.! !

 

 

 

 

 

00. 리스트뷰를 만든다.







01. 다음과같이 코드를 입력한다. (※자세한 내용은 주석처리.)

package com.example.joey.mylistview;

import ...

 

public class MainActivity extends AppCompatActivity {

    ListView listView;

    FruitsAdapter fruitsAdapter;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

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

        fruitsAdapter = new FruitsAdapter();

        listView.setAdapter(fruitsAdapter);

    }

// Adapter 에서 listView나 배열등을 관리하기 때문에 Adapter Class 를 만들어줘야함.↓

    class FruitsAdapter extends BaseAdapter {

        String[] names = {"사과", "바나나", "딸기", "메론", "오렌지"}; //일단은 간단하게 텍스트를 리스트로 나타내보기위함.

        @Override

        public int getCount() {  //리스트가 adapter에게 갯수를 알려줌.

            return names.length;

        }

        @Override

        public Object getItem(int position) { //각각의 값을 알려줌.

            return names[position];

        }

        @Override

        public long getItemId(int position) { //아이디 값을 인덱스로 일단 줘보자.

            return position;

        }

        @Override

        public View getView(int position, View convertView, ViewGroup parent) { //어댑터는 뷰도 다루기때문

            TextView view = new TextView(getApplicationContext());  // 뷰 객체 생성

            view.setText(names[position]);   // 글자를 넣어줄 수 있음(여기는 아이템에 맞는 포지션으로 넣어줌.)

            view.setTextSize(50.0f);         // 텍스트 크기값( f;픽셀값으로) 지정.

            view.setTextColor(Color.BLUE);   //  텍스트 색( 블루) 지정.

            return view;                     // 리턴해주는 것이 각각의 아이템으로 보여짐.

        }

    }

}







02. 실행시켜본다.







03. 텍스트가 리스트형식으로 보여지는 것을 확인 할 수 있다.

 



시크바(SeekBar) 에 대한 사용방법임.






00. SeekBar위젯을 클릭 후 Properties의 Max 값을 지정해준다. 보통은 100으로 지정해준다.







01. 텍스트뷰를 만들어준다.






02. 시크바의 상태에따른 값을 텍스트뷰에 지정하여 보여지게 만들어보자.

package com.example.joey.myseekbar;

import ...

public class MainActivity extends AppCompatActivity {

    TextView textView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override

            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                textView.setText("설정된 값 : "+ progress);

            }

            @Override

            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override

            public void onStopTrackingTouch(SeekBar seekBar) {

            }

        });

        textView = (TextView) findViewById(R.id.textView);

    }

}







03. 실행시켜보자.






04. 시크바를 움직여보자.






05. 텍스트뷰의 값이 변하는 것을 볼 수 있다.







06. 구동이 잘 되는 것을 확인 할 수 있다.
 



Sponsored By















+ Recent posts