안드로이드 개발 질문/답변
(글 수 45,052)
으악..
getView안에서
버튼 클릭리스너를 구현 해 넣었는데
3로우가 있을때 v.setText('aaa')할 경우 조회된 마지막 로우에만 적용됩니다.ㅜ
머가 문제인가요.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.crud_list, null);
}
tv1 = (TextView) v.findViewById(R.id.data1);
tv2 = (TextView) v.findViewById(R.id.data2);
tv3 = (TextView) v.findViewById(R.id.data3);
vec = (Vector) items.get(position);
tv1.setText(JrTools.getString(JrTools.getString(vec.get(0)).toString()));
tv2.setText(JrTools.getString(JrTools.getString(vec.get(1)).toString()));
tv3.setText(JrTools.getString(JrTools.getString(vec.get(2)).toString()));
button = (Button) v.findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
tv3.setText("aaa"); } ->>>>>>>>>>>>. 여기서 해보면 마지막 로우에만 aaa가 찍힙니다.
});
return v;
}
onCreate.JAVA, 와 setListAdapter.JAVA 중 setListAdapter의 클래스의 getView메서드에 넣었는데
저기서 구현하는게 맞는가요.ㅠㅜ
자세히좀 알려주세요
getView안에서
버튼 클릭리스너를 구현 해 넣었는데
3로우가 있을때 v.setText('aaa')할 경우 조회된 마지막 로우에만 적용됩니다.ㅜ
머가 문제인가요.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.crud_list, null);
}
tv1 = (TextView) v.findViewById(R.id.data1);
tv2 = (TextView) v.findViewById(R.id.data2);
tv3 = (TextView) v.findViewById(R.id.data3);
vec = (Vector) items.get(position);
tv1.setText(JrTools.getString(JrTools.getString(vec.get(0)).toString()));
tv2.setText(JrTools.getString(JrTools.getString(vec.get(1)).toString()));
tv3.setText(JrTools.getString(JrTools.getString(vec.get(2)).toString()));
button = (Button) v.findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
tv3.setText("aaa"); } ->>>>>>>>>>>>. 여기서 해보면 마지막 로우에만 aaa가 찍힙니다.
});
return v;
}
onCreate.JAVA, 와 setListAdapter.JAVA 중 setListAdapter의 클래스의 getView메서드에 넣었는데
저기서 구현하는게 맞는가요.ㅠㅜ
자세히좀 알려주세요
tv3이라는 변수가 계속 업데이트가 되는 상황에서 끝까지 그려진 다음에...
tv3은 마지막로우의 textView로 업데이트가 되었겠죠...
그런 상황에서 text를 aaa로 바꾸니까 마지막 로우의 textView가 aaa가 된겁니다.
분명 하고 싶으신것은 해당 로우에 있는 text를 aaa로 바꾸시는거겠죠?
모두 다 하는거면 getView에서 하는게 적당해 보이지는 않구요...
해당 로우만 바꾸는 거면....
if (v == null) {
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.crud_list, null);
}
final View view = v; //이거 추가
......
public void onClick(View v) {
TextView textView3 = (TextView) view.findViewById(R.id.data3);
textView3.setText("aaa");
}
이런식으로 고쳐보세요.