안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
지난번 질문에서 도움을 좀 얻고 해결하고 또 하나의 난관에 봉착해서 여쭈어보고자 글 올립니다.
1. 커스텀 리스트뷰로 구성
- 체크박스 포함
2. 체크박스를 클릭하였을때 TextView의 어떤값을 변경하기 위함입니다.
여러가지 검색하여 adapter 에 알려주어 다시 읽어들여야한다고 하셔서 구현해보았지만
통 값이 변경이 안되어지네요 소스코드 올려보겠습니다
로그 값 등 불필요한 소스코드는 제거하였습니다(보시기에 불편할거 같아서)
public View getView(int position, View convertView, ViewGroup parent){View v = convertView;
if(v ==null || convertView.getId() != R.layout.rowchange){holder = new ItemHolder();
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.rowchange, null);
holder.tv1 = (TextView)v.findViewById(R.id.cust1);
holder.tv2 = (TextView)v.findViewById(R.id.cust2);
holder.tv3 = (TextView)v.findViewById(R.id.cust3);
holder.tv4 = (TextView)v.findViewById(R.id.cust4);
holder.tv5 = (TextView)v.findViewById(R.id.cust5);
change1 = (CheckBox)v.findViewById(R.id.cust_1);
v.setTag(holder);
v.setId(R.layout.rowchange);
}
else {holder = (ItemHolder) v.getTag();
}
XmlData xmlData = (XmlData) items.get(position);
if(xmlData != null){holder.tv1.setText(xmlData.F_FNm1);
holder.tv2.setText(xmlData.F_FBefDt1);
holder.tv3.setText(xmlData.F_FAmt1);
if(holder.tv4.getTag() != null){ if(nFormLoad == true) {xmlData.F_FCDt1 = holder.tv4.getTag().toString();
//String inputValue = holder.tv4.getTag().toString() ;
holder.tv4.setText(xmlData.F_FCDt1);
}
} else if (holder.tv4.getTag() == null) { if(nFormLoad == true) { } else if(nFormLoad == false) {String inputValue1 = xmlData.F_FCDt1;
holder.tv4.setText(inputValue1);
}
}
holder.tv5.setText(xmlData.F_FNm2);
}
if (change1 != null) { change1.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) {//addData(1);
nFormLoad = true;
holder.tv4.setTag("11-07-26"); ((CustFilterChange)context).runOnUiThread(new Runnable() { public void run() {adapter.notifyDataSetChanged();
}
});
} else {}
}
});
}
return v;
아님 제가 개념을 잘못잡고 있는건지
체크박스를 클릭하면 TextView의 값이 변하지 않는게 정상적인건지...
조언좀 부탁드립니다.




홀더패턴을 쓰시는데 체크박스만 홀더객체에 들어가있지 않네요..
Tag를 이용하는것보다 직접적인 인자값으로 던져진 배열에서 관리하는게 더 좋다고 봅니다..