검색결과 리스트
Android AdapterView에 해당되는 글 2건
- 2011.12.19 [Android] AdapterView - 2
- 2011.12.19 [Android] AdapterView - 1
글
리스트 뷰에서는 항목들을 각각이 편집이 가능하다.
다음은 리스트 뷰를 입력에 따라 추가 삭제 하는 내용이다.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="4"
/>
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="add"
/>
<Button
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="delete"
/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
java 코드
ArrayList<String> arr;
ArrayAdapter<String> adapter;
ListView list ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arr = new ArrayList<String>();
arr.add("first");
arr.add("second");
arr.add("third");
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);
list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);
list.setOnItemClickListener(i_listener);
findViewById(R.id.add).setOnClickListener(b_listener);
findViewById(R.id.del).setOnClickListener(b_listener);
}
AdapterView.OnItemClickListener i_listener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, int position, long id){
Toast.makeText(ImageViewActivity.this, "Select : " + arr.get(position), Toast.LENGTH_SHORT);
}
};
Button.OnClickListener b_listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText ed = (EditText)findViewById(R.id.text);
switch(v.getId())
{
case R.id.add:
String text = ed.getText().toString();
if(text.length()!=0)
{
arr.add(text);
ed.setText("");
adapter.notifyDataSetChanged();
}
break;
case R.id.del:
int id = list.getCheckedItemPosition();
if(id!=ListView.INVALID_POSITION)
{
arr.remove(id);
list.clearChoices();
adapter.notifyDataSetChanged();
}
break;
}
}
};
여기에서 지금 SINGLE_CHOICE 로 된 것을 MULTIPLE_CHOICE 로 바꿔주면 한거번에 다수를 지울 수도 있다.
다음은 리스트 뷰를 입력에 따라 추가 삭제 하는 내용이다.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="4"
/>
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="add"
/>
<Button
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="delete"
/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
java 코드
ArrayList<String> arr;
ArrayAdapter<String> adapter;
ListView list ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arr = new ArrayList<String>();
arr.add("first");
arr.add("second");
arr.add("third");
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);
list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);
list.setOnItemClickListener(i_listener);
findViewById(R.id.add).setOnClickListener(b_listener);
findViewById(R.id.del).setOnClickListener(b_listener);
}
AdapterView.OnItemClickListener i_listener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, int position, long id){
Toast.makeText(ImageViewActivity.this, "Select : " + arr.get(position), Toast.LENGTH_SHORT);
}
};
Button.OnClickListener b_listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText ed = (EditText)findViewById(R.id.text);
switch(v.getId())
{
case R.id.add:
String text = ed.getText().toString();
if(text.length()!=0)
{
arr.add(text);
ed.setText("");
adapter.notifyDataSetChanged();
}
break;
case R.id.del:
int id = list.getCheckedItemPosition();
if(id!=ListView.INVALID_POSITION)
{
arr.remove(id);
list.clearChoices();
adapter.notifyDataSetChanged();
}
break;
}
}
};
여기에서 지금 SINGLE_CHOICE 로 된 것을 MULTIPLE_CHOICE 로 바꿔주면 한거번에 다수를 지울 수도 있다.
설정
트랙백
댓글
글
어댑터 뷰는 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등 모은 것을 묶어서 어댑터 뷰라고 통칭한다.
이들은 여러개의 차일드 뷰를 가질 수도 있으며 터치나 키패드로 항목을 선택 할 수도 있다.
먼저 리스트 뷰를 보면 xml 파일을 다음과 같이 작성한다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
그리고 자바 파일은 다음과 같다.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<String> arr = new ArrayList<String>();
arr.add("1");
arr.add("2");
arr.add("3");
arr.add("4");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
}
행여 혹시나 ArrayList가 어떤 것을 import 해야할지 모르는 사람들을 위해 한마디. java.util 을 import 하면 된다.
여기에서 보면 먼저 데이터를 형성하고 그 다음 어댑터를 준비, 다음으로 연결 했다. 어댑터의 속성은 다음과 같다.
첫번째 인자는 현재 액티비티. 그 다음은 리소스 아이디, 마지막으로 생성된 데이터다. 마지막 인자는 배열 형태로도 넣을 수 있다.
리소스 아이디를 살펴보면 다음과 같다.
하지만 이런 형식으로 데이터를 입력 하는 것보다 리소스에 정의 해서 쓰는 것이 좋다.
리소스 파일을 생성해서 10개의 데이터를 넣어보자.
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name ="array">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
</string-array>
</resources>
java 파일에서는 어댑터를 다음과 같이 써 주면 된다.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.array,android.R.layout.simple_list_item_1);
리스트 뷰에는 다음과 같은 속성들이 존재한다.
java 코드에서 다음과 같은 코드를 추가하고 실행해보면 변화를 알 수가 있을 것이다.
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);
이들은 여러개의 차일드 뷰를 가질 수도 있으며 터치나 키패드로 항목을 선택 할 수도 있다.
먼저 리스트 뷰를 보면 xml 파일을 다음과 같이 작성한다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
그리고 자바 파일은 다음과 같다.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<String> arr = new ArrayList<String>();
arr.add("1");
arr.add("2");
arr.add("3");
arr.add("4");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
}
행여 혹시나 ArrayList가 어떤 것을 import 해야할지 모르는 사람들을 위해 한마디. java.util 을 import 하면 된다.
여기에서 보면 먼저 데이터를 형성하고 그 다음 어댑터를 준비, 다음으로 연결 했다. 어댑터의 속성은 다음과 같다.
첫번째 인자는 현재 액티비티. 그 다음은 리소스 아이디, 마지막으로 생성된 데이터다. 마지막 인자는 배열 형태로도 넣을 수 있다.
리소스 아이디를 살펴보면 다음과 같다.
리소스 아이디 | 설명 |
simple_list_item_1 | 하나의 텍스트 뷰 |
simple_list_item_2 | 두개의 텍스트 뷰 |
simple_list_item_check | 오른쪽에 체크 표시 |
simple_list_item_single_choice | 오른쪽에 라디오 버튼 표시 |
simple_list_item_multiple_choice | 오른쪽에 체크 버튼 표시 |
하지만 이런 형식으로 데이터를 입력 하는 것보다 리소스에 정의 해서 쓰는 것이 좋다.
리소스 파일을 생성해서 10개의 데이터를 넣어보자.
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name ="array">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
</string-array>
</resources>
java 파일에서는 어댑터를 다음과 같이 써 주면 된다.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.array,android.R.layout.simple_list_item_1);
리스트 뷰에는 다음과 같은 속성들이 존재한다.
속성 | 인자 | 설명 |
none | CHOICE_MODE_NONE | 항목 선택 못함 |
singleChoice | CHOICE_MODE_SINGLE | 하나의 항목 선택 |
multipleChoice | CHOICE_MODE__MULTIPLE | 복수의 항목 선택 |
java 코드에서 다음과 같은 코드를 추가하고 실행해보면 변화를 알 수가 있을 것이다.
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setDivider(new ColorDrawable(0xffffff00));
list.setDividerHeight(2);
RECENT COMMENT