화면에 출력해야 할 레이아웃이 ListView 나 TextView 처럼 정형화된 포맷이 아니라면 Adapter 인터페이스를 직접 구현하여 화면상에 출력할 레이아웃을 만들어 주어야 한다.
화면상에 출력할 View를 직접 제작하는 방법은 BaseAdapter 추상 클래스를 상속받아 작업하게 된다.
http://developer.android.com/reference/android/widget/BaseAdapter.html
베이스아댑터를 사용하여 화면에 출력하기 위해 두 종류의 클래스를 생성한다.
1) 리스트액티비티 클래스를 상속받는 클래스
2) 베이스아댑터 클래스를 상속받는 클래스
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class ExBaseAdapter extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new MyListAdapter(this));
}
private String[] mStrings = { "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" };
private class MyListAdapter extends BaseAdapter {
private Context mContext;
TextView tv;
public MyListAdapter(Context context) {
mContext = context;
}
@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
// return super.areAllItemsEnabled();
return false;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
// return 0;
return mStrings.length;
}
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
// return super.isEnabled(position);
return !mStrings[position].startsWith("-");
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
// return super.hasStableIds();
return true;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
tv = (TextView) LayoutInflater.from(mContext).inflate(
android.R.layout.simple_expandable_list_item_1, parent,
false);
} else {
tv = (TextView) convertView;
}
tv.setText(mStrings[position]);
return tv;
}
}
}
[결과]
[Android]그리드뷰 (0) | 2013.04.07 |
---|---|
[Android]스피너 (0) | 2013.04.07 |
[Android]리스트액티비티와 리스트 뷰 (0) | 2013.04.07 |
[Android] 아댑터와 아댑터 뷰 (0) | 2013.04.06 |
[Android]자바 콜렉션 (0) | 2013.04.06 |
댓글 영역