본문 바로가기

Android/ListView, Dynamic item

Android ListView, Dynamic item example

안드로이드의 ListView 상에 보여질 아이템을 동적으로 결정하는 예

리스트뷰에 보여질 행이 홀수행인지 짝수행인지에 따라서 아이템의 배경색을 동적으로 적용하는 예

layout/main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#cccccc" android:text="" /> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>


TestActivity.java

package com.example.androidapp; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class TestActivity extends Activity implements OnItemClickListener { String [] name = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; ArrayAdapter<String> adapter; TextView tv; ListView listView; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); adapter = new MyAdapter ( this, android.R.layout.simple_list_item_1, name); listView = (ListView) findViewById(R.id.listView1); listView.setAdapter(adapter); listView.setOnItemClickListener(this); tv = (TextView) findViewById(R.id.textView1); } public void onItemClick(AdapterView<?> parent, View v, int position, long id) { TextView tv = (TextView) v; String name = tv.getText().toString(); this.tv.setText(name); } }


MyAdapter.java

package com.example.androidapp; import android.content.Context; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class MyAdapter extends ArrayAdapter<String> { String[] objects; public MyAdapter(Context context, int textViewResourceId, String[] objects) { super(context, textViewResourceId, objects); this.objects = objects; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView view = (TextView) convertView; if(view==null) { view = new TextView(getContext()); } view.setText(objects[position]); view.setHeight(80); if(position%2==0) view.setBackgroundColor(Color.LTGRAY); else view.setBackgroundColor(Color.WHITE); return view; } }