activity_main.xml

<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#80f0"
android:gravity="center"
android:text="country"
android:textSize="30dp" />
<Spinner
android:id="@+id/sp01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp" />

MainActivity.java

public class MainActivity extends AppCompatActivity {
TextView textView;
Spinner spinner;
ArrayAdapter<String> adapter = null;

String[] items = {"korea", "china", "japan", "france"};

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

textView = findViewById(R.id.txt);
spinner = findViewById(R.id.sp01);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(adapter);
}
}

---seperate data---

activity_main.xml

<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#80f0"
android:gravity="center"
android:text="country"
android:textSize="30dp" />
<Spinner
android:id="@+id/sp01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp" />

country.xml

<string-array name="country">
<item>korea</item>
<item>china</item>
<item>japan</item>
<item>france</item>
</string-array>

MainActivity.java

public class MainActivity extends AppCompatActivity {

Spinner spinner;
ArrayAdapter<CharSequence> adapter = null;

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

spinner = findViewById(R.id.sp01);
adapter = ArrayAdapter.createFromResource(this, R.array.country, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(adapter);
}
}

'android studio' 카테고리의 다른 글

inflation  (0) 2019.08.11
GridView  (0) 2019.08.11
AdapterView(ListView)  (0) 2019.08.10
view에 도형, 텍스트 그리기  (0) 2019.08.10
Button, RadioButton, CheckBox, ImageView, ImageButton  (0) 2019.08.10

Adapter가 data를 가져와서 getview() method를 통해 Adapter View형태로 보여준다

Adapter의 종류에는 ArrayAdapter, SimpleAdapter, cursorAdapter가 있다

Adapter View의 종류에는 ListView, GridView, Spinner, Gallery등이 있다

 

activity_main.xml

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

MainActivity.java

public class MainActivity extends AppCompatActivity {

ArrayList<String> arrayList = null;
ArrayAdapter<String> adapter = null;
ListView listView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

arrayList = new ArrayList<String>();
arrayList.add("jusung");
arrayList.add("aaaaa");
arrayList.add("bbbbb");
arrayList.add("ccccc");
arrayList.add("ddddd");
arrayList.add("eeeee");
arrayList.add("fffff");
arrayList.add("ggggg");
arrayList.add("hhhhh");
arrayList.add("iiiii");
arrayList.add("jjjjjj");

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);

listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
//adapter를 통해 화면에 보여준다
}

}

---seperate data---

activity_main.xml

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

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

ArrayAdapter<CharSequence> arrayAdapter = null;
ListView listView = null;

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

//createFromResource() method를 이용해 resource로부터 adapter를 생성
arrayAdapter = ArrayAdapter.createFromResource(this, R.array.contact, android.R.layout.simple_list_item_checked);
//ctr+space bar를 눌러서 다른 목록을 선택할수있다.
listView = findViewById(R.id.listView); //listView를 가져온다
listView.setAdapter(arrayAdapter);

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
//listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
//multiple일때 여러개 선택가능하다

//ColorDrawable객체를 이용해 구분선에 색을추가할수있다
ColorDrawable colorDrawable = new ColorDrawable(Color.BLUE);
listView.setDivider(colorDrawable);
listView.setDividerHeight(5);
}

}

data.xml

//res\values\data.xml

<resources>
<string-array name="contact">
<item>fffff 010010010</item>
<item>eeeee 010010010</item>
<item>ddddd 010010010</item>
<item>ccccc 010010010</item>
<item>bbbbb 010010010</item>
<item>aaaaa 010010010</item>
</string-array>
</resources>

---listActivity---

MainActivity.java

public class MainActivity extends ListActivity {
//ListActivity를 상속받는다
ArrayList<String> data = null;
ArrayAdapter<String> adapter = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
//ListActivity에 listView가 포함되있다

data = new ArrayList<String>();
data.add("aaaaa");
data.add("bbbbb");
data.add("ccccc");
data.add("ddddd");
data.add("eeeee");
data.add("fffff");
data.add("ggggg");
data.add("hhhhh");
data.add("iiiii");

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);

setListAdapter(adapter);
//ListActivity에 setListAdapter method를 이용해 adapter를 추가시킨다
}
}

---listActivity---

MainActivity.java

public class MainActivity extends ListActivity {
//ListActivity를 상속받는다
String[] laughing = {"haha","hoho","hihi","hehe","huhu","hwhw"};
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
//ListActivity에 listView가 포함되있다

adapter = new ArrayAdapter<String>(this, R.layout.activity_list_style,
R.id.laugh, laughing);
//직접만든 activity_list_style로 지정한다
//actvity_list_style에 만든 text view의 id값에 data laughing를 입력한다

setListAdapter(adapter);
//ListActivity에 setListAdapter method를 이용해 adapter를 추가시킨다
}
}

activity_list_style.xml

//res\layout에 activity_list_style.xml를 만든다

<ImageView
android:id="@+id/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_foreground"/>
<TextView
android:id="@+id/laugh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:paddingTop="50dp"/>

'android studio' 카테고리의 다른 글

GridView  (0) 2019.08.11
Spinner  (0) 2019.08.10
view에 도형, 텍스트 그리기  (0) 2019.08.10
Button, RadioButton, CheckBox, ImageView, ImageButton  (0) 2019.08.10
text view  (0) 2019.08.09

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
// 주석처리해준다

Custom custom = new Custom(this);
setContentView(custom);
//custom 객체 생성후 불러온다
}

Custom.java


public class Custom extends View {
//View를 상속받는다
private Paint paint;

public Custom(Context context){
super(context);
}//view class에 context호출하는 생성자생성

protected void onDraw(Canvas canvas){
canvas.drawColor(Color.CYAN);
//CYAN color의 도화지생성

paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(3.0F);
//STROKE는 테두리를 나타내고 default값은 FILL이다
paint.setColor(Color.GREEN);
canvas.drawCircle(500, 500, 300, paint);
//x,y 좌표 500에 300 반지름의 green 원이 생긴다

paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.MAGENTA);
canvas.drawCircle(500, 500, 300, paint);
//위에 원과 겹쳐 원에 테두리가 있는것처럼보인다

paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.BLUE);
paint.setARGB(255,255,0,0);
//a는 0~255사이의값으로 투명도를 나타낸다
canvas.drawRect(10,10,200,200,paint);
//왼쪽 상단과 오른쪽 상단의 좌표를 지정한다

paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10.0F);
//STROKE로 설정할경우 테두리가그려진다
paint.setColor(Color.BLUE);
paint.setARGB(255,0,255,0);
canvas.drawRect(10,210,200,400,paint);

DashPathEffect dashPathEffect = new DashPathEffect(new float[]{5,5}, 1);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10.0F);
paint.setPathEffect(dashPathEffect);
//점선을 만든다
paint.setColor(Color.BLUE);
canvas.drawRect(220,210,400,410,paint);

//TEXT
paint.setStyle(Paint.Style.FILL);
paint.setTextSize(100);
canvas.drawText("it is jusung", 300, 900,paint);
}
}

'android studio' 카테고리의 다른 글

Spinner  (0) 2019.08.10
AdapterView(ListView)  (0) 2019.08.10
Button, RadioButton, CheckBox, ImageView, ImageButton  (0) 2019.08.10
text view  (0) 2019.08.09
android layout  (0) 2019.08.07

----Button, RadioButton, CheckBox----

activity_main.xml

<TextView
android:id="@+id/txt01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pay now"
android:textSize="25sp"
android:layout_margin="10dp"/>
<RadioGroup
android:id="@+id/rGroup01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rBtn01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Card"
android:textSize="25sp"
android:textColor="#33aa88"
android:textStyle="bold"/>
<RadioButton
android:id="@+id/rBtn02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="phone"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#33aa88"/>
<RadioButton
android:id="@+id/rBtn03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="bank"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#33aa88"/>
</RadioGroup>
<!--버튼이 하나씩만 작동할수 있게 하려면 RadioGroup으로 묶어줘야한다-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="30dp"
android:gravity="right">
<CheckBox
android:id="@+id/chkBox01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="accept terms"
android:textSize="20sp"
android:layout_marginRight="45dp"/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pay now"
android:textSize="25sp"
android:textStyle="bold"
android:layout_gravity="center_horizontal"/>

----imageView----

image file을 res\drawable에 저장후

@drawable/file_name(only lowercase)을 이용해 불러올수있다

activity_main.xml

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/hey"
android:maxWidth="300dp"
android:adjustViewBounds="true"/>
<!--크기 조절을위해선 layout크기를 wrap_content로 해야하고
adjustViewBoudns에 true값을 줘야한다-->
<!--maxHeight 값을 입력안할시 가로비율에맞춰 크기가조정된다=-->
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/hey"
android:scaleType="matrix"/>
<!--scaleType을 설정하지 않을경우 사진이 중앙으로
가로, 세로비율이 자동으로 조절되서 오게된다
scaleType="fitXY"로 설정할경우 화면 크기로 image size가 조절된다
fitXY로 설정후 Width와 Height값을통해 사진크기를 조절할수있다-->

----image button---

activity_main.xml

<ImageButton
android:id="@+id/imgBtn"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/button"
android:contentDescription="turn off"
android:layout_gravity="center"/>
<!--src로 img를 불러올경우 border이 생겨서 background로 불러온다-->
<!--contentDescription을통해 button설명글을 추가할수있다-->

 

'android studio' 카테고리의 다른 글

AdapterView(ListView)  (0) 2019.08.10
view에 도형, 텍스트 그리기  (0) 2019.08.10
text view  (0) 2019.08.09
android layout  (0) 2019.08.07
Custom ListView  (0) 2019.08.07

----text view----

1. activity_main.xml

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="30sp" />
<!--app, res, values, strings.xml에서 text를 따로 관리할수있다
string tag와 name을 이용해 불러올수있다-->
<!--text color는 #AARRGGBB 로 정의할수있다
AA는 투병도로 00은 완전투명 77는 반투명 FF는 완전불투명-->

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/test"
android:textSize="30sp" />
<!--다국어로 이용할경우 resource안에
values-en/strings.xml, values-ko/string.xml 와같이 만든후
단말기 setting으로 각 언어를 불러올수있다-->

<TextView
android:id="@+id/txtView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/marquee"
android:textSize="30sp"
android:singleLine="true"
android:focusable="true"
android:ellipsize="marquee"/>

<!--android:singleLine="true"를 할경우 뒷부분이 ...으로 한줄에 표시된다 -->
<!--android:ellipsize="start, middle, end, marquee"로 뒷부분 ...을 조정가능-->

<!--marquee 속성을 이용하려면 singleline, focusable 값에 true를 설정하고
java코드를 작성해준다. marqueeRepeatLimit="forever"를통해 반복횟수를 조절할수있다-->

<!--android:maxLines="1"을 이용해 표시될 줄을 설정할수있다-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sndroid"
android:textSize="70sp"
android:textStyle="bold|italic"/>
<!--android:typeface="serif, sans, monospace"와 같이 지정할수있고
android:fontFamily="sans-serif"와 같이 글꼴을 지정할수도있다-->
<!--android:textStyle="Normal, Bold, Italic" 과같이 변경할수있다
두가지의 style을 적용할경우 | 를 이용한다-->

</LinearLayout>

 

2. strings.xml

<resources>
<string name="app_name">My Application</string>
<string name="test">test</string>
<string name="marquee">testtesttestsetsetsetstsetsetsetestsetsetestest</string>
</resources>

<!--name을 설정후 TextView를 이용해 사용할수있다-->

 

3. MainActivity.java

TextView textView;

textView = findViewById(R.id.txtView);
textView.setSelected(true);

<!--marquee 옵션이 작동할수있게 한다-->

 

----edit text-----

activity_main.xml

<EditText
android:id="@+id/nameInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:inputType="text"
android:hint="put your name"/>
<!--input Type 설정시 키보드가 알맞게 변경된다-->

<!--inputType="number" or "textEmailAddress 가올수있다-->

'android studio' 카테고리의 다른 글

AdapterView(ListView)  (0) 2019.08.10
view에 도형, 텍스트 그리기  (0) 2019.08.10
Button, RadioButton, CheckBox, ImageView, ImageButton  (0) 2019.08.10
android layout  (0) 2019.08.07
Custom ListView  (0) 2019.08.07

1. activity_main.xml

//title과 list부분의 전체적인 style을 설정한다

<?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">

<TextView
android:id="@+id/tv01"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text = "jusung"
android:textSize="30dp"
android:textStyle="bold"/>
<ListView
android:id="@+id/listView01"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9">
</ListView>
</LinearLayout>

 

2. item_style.xml

//list부분에서 item내부의 style을 설정한다

<?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="match_parent">

<ImageView
android:id="@+id/icon"
android:layout_width="80dp"
android:layout_height="80dp"/>
<TextView
android:id="@+id/title"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textStyle="bold"
android:padding="10dp"
android:paddingTop="30dp"/>
<TextView
android:id="@+id/comment"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:paddingTop="30dp"/>
<Button
android:id="@+id/btn_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "select"/>
</LinearLayout>

 

3. Data.java

//data를 객체를 활용하기위한 class

package com.example.myapplication;

public class Data {
private int icon;
private String title;
private String comment;

public Data(int icon, String title, String comment){
this.icon = icon;
this.title = title;
this.comment = comment;
} //객체를 생성하기위한 생성자

public int getIcon(){
return icon;
}
public String getTitle(){
return title;
}
public String getComment(){
return comment;
}
}

 

4. MainActivity.java

//data를 가져오기위한 ArrayList생성하고 data를 추가한다

//Data class에 생성자를이용해 객체를 생성하고 add method를이용해 배열에 추가시킨다

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private ArrayList<Data> data = null;
private CustomAdapter cAdapter = null;
private ListView listView = null;

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

data = new ArrayList<Data>();

data.add(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
data.add(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
data.add(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
data.add(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
data.add(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
data.add(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));

cAdapter = new CustomAdapter( context: this, R.layout.item_style, data);

//item_style의 layout을 설정하고 위에만들어논 data로 cAdapter를 생성한다

listView = findViewById(R.id.listView01);

//listView를 id를통해 가져온다
listView.setAdapter(cAdapter);

//listView에 Adapter로 setting한다
}
}

5.itemView.java

//item_style에 입력된 data를 memory로 loading하기위해서

//객체화하는과정이필요한데 이를 inflation이라고한다

//item_style에 정의된 style에 data를 가져와 세팅시킨다

package com.example.myapplication;

import android.content.Context;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class itemView extends LinearLayout{
private ImageView mIcon;
private TextView mTitle;
private TextView mComment;

//생성자 생성
public itemView(Context context, Data data){
super(context);

//인플레이션: 메모리에 올려 객체화하는것
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.item_style, root: this, attachToRoot: true);
//inflate method를 이용해 item_style를 parameter로 불러오고
//root element를 linearlayout으로 설정하고 root를 포함한다에 true값을 설정

//set Icon
mIcon = findViewById(R.id.icon);
mIcon.setImageResource(data.getIcon());

//set Title
mTitle = findViewById(R.id.title);
mTitle.setText(data.getTitle());

//set Comment
mComment = findViewById(R.id.comment);
mComment.setText(data.getComment());
}//Data class에 getIcon method를 이용해 return값을 받아오고
}//Set함수를 이용해 세팅시킨다

 

6. CustomAdapter.jave

//추상class BaseAdapter을 상속받아서

//getView, getCount method를 이용해 CustomAdapter를 만든다

//getCount는 item의 개수를 return해주는 역할을한다

//item은 item index를 통해 구분을 해주는데

//indexr값을 구하려면 getCount를 통해 전체 item의 개수를 알아야한다

//getView는 item에 보이는 View와 관련이있다

package com.example.myapplication;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;

public class CustomAdapter extends BaseAdapter {
private Context mContext = null;
private int layout = 0;
private ArrayList<Data> mData = null;
private LayoutInflater inflater = null;

//data를 입력하기위한 ArrayList를 만든다

public CustomAdapter(Context context, int layout, ArrayList<Data> mData){
this.mContext = context;
this.layout = layout;
this.mData = mData;
this.inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
} //생성자 생성


public int getCount(){
return mData.size();
} //index를 얻어오기위해 item의 개수를 return
public Object getItem(int position){
return mData.get(position).getTitle();
} //position은 item의 index위치를 가져오기위한 parameter이다
public long getItemId(int position){
return position;
} //position을 매개변수로 index값을 가져온다
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = inflater.inflate(this.layout, parent, attachToRoot: false);
}//만들어진 item view를 convertView를 통해 불러온다.

//하나만 있으면되기때문에 null인경우를 확인후 생성한다
ImageView ico = convertView.findViewById(R.id.icon);
TextView title = convertView.findViewById(R.id.title);
TextView comment = convertView.findViewById(R.id.comment);
Button btn_select = convertView.findViewById(R.id.btn_select);

//만들어논 item_style(image, text, text, button) 을 convertView를통해 불러온다

ico.setImageResource(mData.get(position).getIcon());
title.setText(mData.get(position).getTitle());
comment.setText(mData.get(position).getComment());

//불러온 객체를 position을 활용하여 setting 해줘야한다

if((position%2) == 1){
convertView.setBackgroundColor(0x800000ff);
}else{
convertView.setBackgroundColor(0x200000ff);
} //item들에 색깔을지정하여 구분하기쉽게한다
return convertView;
}
}

 

Result

inflation을 itemView에 설정할경우

MainActivity.java, itemView.java, CustomAdapter.java 파일을

아래와같이 변경한다

4. MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private ArrayList<Data> data = null;
private CustomAdapter cAdapter = null;
private ListView listView = null;

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

cAdapter = new CustomAdapter(context: this);
cAdapter.addItem(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
cAdapter.addItem(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
cAdapter.addItem(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
cAdapter.addItem(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
cAdapter.addItem(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));
cAdapter.addItem(new Data(R.drawable.semo, title: "hehehe", comment: "hohohoho"));

listView = findViewById(R.id.listView01);
listView.setAdapter(cAdapter);
}
}

 

5.itemView.java

package com.example.myapplication;

import android.content.Context;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class itemView extends LinearLayout{
private ImageView mIcon;
private TextView mTitle;
private TextView mComment;

//생성자 생성
public itemView(Context context, Data data){
super(context);

//인플레이션: 메모리에 올려 객체화하는것
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.item_style, this, true);
//inflate method를 이용해 item_style를 parameter로 불러오고
// root element를 linearlayout으로 설정하고 root를 포함한다에 true값을 설정

//set Icon
mIcon = findViewById(R.id.icon);

//set Title
mTitle = findViewById(R.id.title);

//set Comment
mComment = findViewById(R.id.comment);
//Data class에 getIcon method를 이용해 return값을 받아오고
//Set함수를 이용해 세팅시킨다
}
public void setIcon(int icon){mIcon.setImageResource(icon);};
public void setTitle(String data){mTitle.setText(data);};
public void setComment(String data){mComment.setText(data);};
//Data class에 get mothod를 setting하는 작업
}

6. CustomAdapter.jave

package com.example.myapplication;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;

public class CustomAdapter extends BaseAdapter {
private Context mContext = null;
private ArrayList<Data> mData = new ArrayList<Data>();

public CustomAdapter(Context context){
this.mContext = context;
}

//item 추가위한 method
public void addItem(Data data){
mData.add(data);
} //MainActivity에서 data를 추가시키기위한 method

//item의 개수를 return
public int getCount(){
return mData.size();
}
public Object getItem(int position){
return mData.get(position).getTitle();
}
public long getItemId(int position){
return position;
}
public View getView(int position, View convertView, ViewGroup parent){
itemView itemView;
if(convertView == null){
itemView = new itemView(mContext, mData.get(position));
//position을 이용해 data를가져오고 itemView를 생성한다
}else{
itemView = (itemView)convertView;
} //이미 있을경우 itemView를 (itemView)형변환을해준후
// 기존의 convertView로 대채해준다

itemView.setIcon(mData.get(position).getIcon());
itemView.setTitle(mData.get(position).getTitle());
itemView.setComment(mData.get(position).getComment());
//position을 활용하여 itemView에 set method와
// Data class에 get mothod를이용해 세팅한다

if((position%2) == 1){
itemView.setBackgroundColor(0x800000ff);
}else{
itemView.setBackgroundColor(0x200000ff);
}
return itemView;
}
}

'android studio' 카테고리의 다른 글

AdapterView(ListView)  (0) 2019.08.10
view에 도형, 텍스트 그리기  (0) 2019.08.10
Button, RadioButton, CheckBox, ImageView, ImageButton  (0) 2019.08.10
text view  (0) 2019.08.09
android layout  (0) 2019.08.07

+ Recent posts