이전 포스트에서 Java에서 생성된 데이터들을
리스트 뷰(ListView)에 표시하는 예제 소스를 보여드렸습니다.
이번 예제소스는
리스트 뷰(ListView)에 표시된 데이터들(여기서는 문자열들(Strings))을
선택했을 때 해당 아이템의 문자열을 Toast로 출력하는 예제소스입니다.
이전 예제에서 Java 소스만 조금 추가하면 됩니다.
Button 뷰(View) 작업할 때 OnClickListener를 사용해 보셨다면
아주 쉬울 겁니다.
ListView에 OnItemClickListener 만 설정해주시면 됩니다.
xml파일을 이전 포스트와 동일하면
Java 파일도 이전 포스트에서 클릭처리 부분만 추가하였습니다.
activity_main.xml |
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="200dp"/> </RelativeLayout> |
굵은 글씨가 새로 추가된 코드(code) 입니다.
MainActivity.java |
public class MainActivity extends Activity {
//대량의 문자열 데이터를 저장할 Arraylist 객체 생성 ArrayList<String> mDatas= new ArrayList<String>();
ListView listview; //ListView 참조변수 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
//문자열 데이터 ArrayList에 추가 mDatas.add("KOREA"); mDatas.add("CANADA"); mDatas.add("FRANCE"); mDatas.add("MEXICO"); mDatas.add("POLAND"); mDatas.add("SAUDI ARABIA");
//ListView가 보여줄 뷰를 만들어내는 Adapter 객체 생성 //ArrayAdapter : 문자열 데이터들을 적절한 iew로 1:1로 만들어서 List형태로 ListView에 제공하는 객체 //첫번째 파라미터 : Context객체 ->MainActivity가 Context를 상속했기 때문에 this로 제공 가능 //두번째 파라미터 : 문자열 데이터를 보여줄 뷰. ListView에 나열되는 하나의 아이템 단위의 뷰 모양 //세번째 파라미터 : adapter가 뷰로 만들어줄 대량의 데이터들 //본 예제에서는 문자열만 하나씩 보여주면 되기 때문에 두번째 파라미터의 뷰 모먕은 Android 시스템에서 제공하는 //기본 Layout xml 파일을 사용함. ArrayAdapter adapter= new ArrayAdapter(this, android.R.layout.simple_list_item_1, mDatas);
listview= (ListView)findViewById(R.id.listview); listview.setAdapter(adapter); //위에 만들어진 Adapter를 ListView에 설정 : xml에서 'entries'속성
//ListView의 아이템 하나가 클릭되는 것을 감지하는 Listener객체 설정 (Button의 OnClickListener와 같은 역할) listview.setOnItemClickListener(listener);
}
//ListView의 아이템 하나가 클릭되는 것을 감지하는 Listener객체 생성 (Button의 OnClickListener와 같은 역할) OnItemClickListener listener= new OnItemClickListener() {
//ListView의 아이템 중 하나가 클릭될 때 호출되는 메소드 //첫번째 파라미터 : 클릭된 아이템을 보여주고 있는 AdapterView 객체(여기서는 ListView객체) //두번째 파라미터 : 클릭된 아이템 뷰 //세번째 파라미터 : 클릭된 아이템의 위치(ListView이 첫번째 아이템(가장위쪽)부터 차례대로 0,1,2,3.....) //네번재 파리미터 : 클릭된 아이템의 아이디(특별한 설정이 없다면 세번째 파라이터인 position과 같은 값) @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub
//클릭된 아이템의 위치를 이용하여 데이터인 문자열을 Toast로 출력 Toast.makeText(MainActivity.this, mDatas.get(position), Toast.LENGTH_SHORT).show(); } }; } |
결과화면입니다. 클릭해서 토스트(Toast) 출력도 합니다.
'소소한 소스코드' 카테고리의 다른 글
[안드로이드 Android] 리스트 뷰(ListView) 5. OnItemLongClickListener 와 Popup Menu (0) | 2015.06.09 |
---|---|
[안드로이드 Android] 리스트 뷰(ListView) 4. 컨텍스트 메뉴 달기(Context Menu) (0) | 2015.06.09 |
[안드로이드 Android] 리스트 뷰(ListView) 2. ArrayAdapter (0) | 2015.06.08 |
[안드로이드 Android] 리스트 뷰(ListView) 1. android:entries 속성 (0) | 2015.06.08 |
[안드로이드 Android] 팝업 메뉴(Popup Menu) (0) | 2015.06.04 |