안드로이드 개발 질문/답변
(글 수 45,052)
Custom으로 리스트뷰를 하나 만들었는데요
텍스트뷰 오른쪽에 버튼이 하나 있는 형식입니다.
버튼안의 텍스트는 맨처음 다 1로 설정되어있구요
각 버튼을 클릭할시 클릭한 버튼의 내부 텍스트가 +1씩 되는 형식으로 이벤트를 넣었습니다.
그런데 스크롤로 밑으로 이동했다 다
시 올리니 5까지 올려 놓았던 내부텍스트들이 모두 1로 되돌아 가있더군요 어떤형식으로 해야할까요 ㅠㅠ
텍스트뷰 오른쪽에 버튼이 하나 있는 형식입니다.
버튼안의 텍스트는 맨처음 다 1로 설정되어있구요
각 버튼을 클릭할시 클릭한 버튼의 내부 텍스트가 +1씩 되는 형식으로 이벤트를 넣었습니다.
그런데 스크롤로 밑으로 이동했다 다
시 올리니 5까지 올려 놓았던 내부텍스트들이 모두 1로 되돌아 가있더군요 어떤형식으로 해야할까요 ㅠㅠ
package com.shryu.test;
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.Filter; import android.widget.Filterable; import android.widget.TextView;
public class ArrayAdapterExample extends BaseAdapter implements Filterable {
private Context mContext;
private int mFieldId = 0;
public ArrayAdapterExample(Context context, int textViewResourceId) {
super();
mContext = context;
mFieldId = textViewResourceId;
}
@Override
public int getCount() {
return 100;
}
@Override
public Object getItem(int position) {
String result = new String(position + "");
return result;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = LayoutInflater.from(mContext);
v = vi.inflate(R.layout.list_item_1, null);
}
String value = (String) this.getItem(position);
if (value != null) {
TextView tt = (TextView) v.findViewById(R.id.TextView01);
tt.setText("position = " + value);
Button btn = (Button) v.findViewById(R.id.Button01);
btn.setText("1");
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Button btn = (Button)v;
btn.setText(String.valueOf(Integer.parseInt(btn.getText().toString())+1));
}
});
}
return v;
}
@Override
public Filter getFilter() {
return null;
}
}



getView 이벤트는 화면에 나타날때 일어나는 이벤트입니다.
스크롤내려서 없어졌다가 다 스크롤로 나타났을때는 다시 실행되겠죠.
코드를 보면 getView에서 1을 지정하게 되어있는데 숨겨졌다 다시 나타나면 또 다시 1을 지정하게 되겠죠.
필요한 값을 어레이로 별도 선언한후 어레이에서 값을 관리해주시면 됩니다.