Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 에러페이지
- 생성자
- mybatis
- 국제화
- oracle
- Menu
- layout
- JSP
- AWT
- 안드로이드
- JavaScript
- Eclips
- HTML
- OGNL
- Graphic
- paint
- struts2
- 이클립스
- 예외처리
- 오버로딩
- 어노테이션
- 배열
- 기본
- Spring
- Android
- 클래스
- 메서드
- Java
- 전화걸기
- 메소드
Archives
- Today
- Total
note
ListActivity 사용 본문
23ListViewDemo2
main.xml
24ListViewDemo3
main.xml
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" > <!-- hint = 입력시 없어짐(입력하기 전에 보여지는 텍스트) --> <EditText android:id="@+id/myEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="새 해야 할 일" /> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="false" /> </LinearLayout>
package kr.android.listview2; //ListActivity 사용하기 ArrayList사용하여 추가 삭제기능 import java.util.ArrayList; import android.app.ListActivity; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.os.Bundle; public class ListViewDemo2 extends ListActivity implements OnKeyListener { //이벤트 리스너 ArrayListtodoItems; ArrayAdapter aa; EditText myEditText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //이벤트 소스 myEditText = (EditText) findViewById(R.id.myEditText); //데이터 저장소 생성 todoItems = new ArrayList (); //ArrayList와 ListView 데이터 바인딩 aa = new ArrayAdapter (this, android.R.layout.simple_list_item_1, todoItems); //ArrayAdapter를 ListView에 등록 setListAdapter(aa); //이벤트 소스와 이벤트 리스너가 구현된 객체 연결 myEditText.setOnKeyListener(this); } //전달된 인자 //View v : 이벤트 발생 객체 //int keyCode : 입력한 키 //KeyEvent event : KeyEvent 객체 public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { //저장소에 데이터 저장(index 0에 데이터 저장)만약 기존 데이터가 있으면, //신규 데이터는 index0에 저장 기존데이터는 다음 index에 저장 todoItems.add(0, myEditText.getText().toString()); //데이터 저장소로부터 데이터를 새롭게 읽어들여서 ListView를 갱신 aa.notifyDataSetChanged(); //빈문자열로 다시 만들어 입력을 받게끔 myEditText.setText(""); return true; } } return false; } }
24ListViewDemo3
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/newitem" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:text="Add" /> <Button android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:text="Del" /> </LinearLayout> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:choiceMode="singleChoice" /> </LinearLayout>
package kr.android.listview3; import java.util.ArrayList; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; public class ListViewDemo3 extends ListActivity { ArrayListitems; ArrayAdapter adapter; ListView list; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //데이터 저장소 생성 및 초기 데이터 설정 items = new ArrayList (); items.add("First"); items.add("Second"); items.add("Third"); //ArrayList에 있는 데이터를 ListView에 바인딩 adapter = new ArrayAdapter (this, android.R.layout.simple_list_item_single_choice, items); //ArrayAdapter를 ListView에 등록 setListAdapter(adapter); //onClick에 두개를 진입하기 위해 설정 (이렇게 안하면 코드가2배) //이벤트 소스와 이벤트를 처리해주는 객체 연결 findViewById(R.id.add).setOnClickListener(mClickListener); findViewById(R.id.delete).setOnClickListener(mClickListener); } //익명내부 클래스 형태의 이벤트 처리 Button.OnClickListener mClickListener = new View.OnClickListener(){ public void onClick(View v){ EditText ed = (EditText)findViewById(R.id.newitem); switch(v.getId()){ //이벤트가 발생한 객체의 id case R.id.add: String text = ed.getText().toString(); if(text.length() != 0){ items.add(0,text); ed.setText(""); adapter.notifyDataSetChanged(); } break; case R.id.delete: int id; //현재 동작하는 ListView객체 반환 list = getListView(); id=list.getCheckedItemPosition(); //getCheckedItemPosition()으로부터 반환받은 //position이 정상적인 position인지 검증 if(id != ListView.INVALID_POSITION){ //데이터 삭제 //ArrayList 데이터 삭제 items.remove(id); //라디오 버튼을 선택하지 않은 것으로 초기화 list.clearChoices(); //ArrayList에 변경된 데이터를 다시 읽어들여 //ListView를 갱신 adapter.notifyDataSetChanged(); } break; } } }; }
'Android > 기본' 카테고리의 다른 글
그리드 Grid (0) | 2012.01.09 |
---|---|
스핀 컨트롤 Spinner (0) | 2012.01.09 |
ListActivity ArrayAdapter (0) | 2012.01.09 |
Android Table Layout (0) | 2012.01.06 |
Android Frame Layout (0) | 2012.01.06 |