Android/기본
ListActivity 사용
Bohemian life
2012. 4. 28. 19:38
<?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 { //이벤트 리스너 ArrayList<string> todoItems; ArrayAdapter<string> 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<string>(); //ArrayList와 ListView 데이터 바인딩 aa = new ArrayAdapter<string>(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; } }
<?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 { ArrayList<string> items; ArrayAdapter<string> adapter; ListView list; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //데이터 저장소 생성 및 초기 데이터 설정 items = new ArrayList<string>(); items.add("First"); items.add("Second"); items.add("Third"); //ArrayList에 있는 데이터를 ListView에 바인딩 adapter = new ArrayAdapter<string>(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; } } }; }