class ListAdapter extends BaseAdapter{
Context context;
LayoutInflater inflater;
ArrayList<Member> arMem;
int layout;
public ListAdapter(Context aContext, int aLayout, ArrayList<Member> aarMem) {
context = aContext;
inflater = (LayoutInflater)aContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arMem = aarMem;
layout = aLayout;
}
@Override
public int getCount() {
return arMem.size();
}
@Override
public Object getItem(int position) {
return arMem.get(position).name;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
if (convertView == null) {
convertView=inflater.inflate(layout, parent, false);
}
TextView txt = (TextView)convertView.findViewById(R.id.text);
txt.setText(arMem.get(position).name);
Button btn = (Button)convertView.findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
String str = arMem.get(pos).name + "에게 귓속말을 합니다.";
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
}
화면에 리스트를 뿌려줍니다.
왼쪽엔 이름, 오른쪽엔 귓속말하기 버튼.
xml문서는 두개
1. TextView와 Button이 있는 레이아웃.
2. LinearLayout안에 ListView만 선언되어 있는 레이아웃.
JAVA 소스에서
onCreate부분에 배열을 임의로 만들고 추가했습니다.
그리고 나서
BaseAdapter를 상속받는 Adapter클래스를 구현해서
그 Adapter를 이용해 배열을 list에 set 시킵니다.
여기서 질문입니다.
BaseAdapter를 상속받는 Adapter클래스를 만들 때
class ListAdapter extends BaseAdapter{
Context context;
LayoutInflater inflater;
ArrayList<Member> arMem;
int layout;
이러한 멤버변수들을 만들어주는데
때에따라 만들어주는 멤버변수의 갯수나 종류가 다르더군요.
언제 뭘 어찌 만들어야하는지 궁급합니다.
그리고 그 밑에
public ListAdapter(Context aContext, int aLayout, ArrayList<Member> aarMem) {
context = aContext;
inflater = (LayoutInflater)aContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arMem = aarMem;
layout = aLayout;
}
이런 생성자가 있는데 왜 인자로 infater는 안가지고있는지.. 가져도 상관이 없는지..
이상 질문입니다.
제발 알려주십시오.. 봐도봐도 이해가 안가서..
감사합니다..