모든 행에 대해 Relative Layout
을 확장하여 사용자 정의 ListView
을 구현했습니다.setOnItemClickListener가 사용자 지정 목록보기에서 작동하지 않습니다.
모든 행은 Checkbox
, Textview, Edittext
입니다. 모든 것이 잘 작동합니다. 그것은 그것을 유지합니다. Listview OnItemClickListener
행에서 Checkbox 및 Textview까지 작동합니다. 하지만 Edittext를 연속으로 추가하면 작동이 멈췄습니다.
도움이됩니다.
이 내 코드입니다
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
convertView = inflator.inflate(R.layout.takeso_row, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.takesolabel);
viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.takesocheck);
viewHolder.edittext = (EditText) convertView.findViewById(R.id.takesoquantity);
viewHolder.edittext.setClickable(true);
viewHolder.edittext.setFocusable(true);
viewHolder.edittext.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
int getPosition = (Integer) v.getTag();
if(!hasFocus){
//final int pos = position;
final EditText quantity = (EditText) v;
//Product prod = (Product)v.getTag();
if(quantity.getText().toString().length() == 0){
list.get(getPosition).setProdQuantity(0);
}else{
list.get(getPosition).setProdQuantity(Integer.parseInt(quantity.getText().toString()));
}
}
}
});
viewHolder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setIsChecked(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
for(int i=0; i < passlist.size(); i++)
{
if(list.get(getPosition).getProductId().compareTo(passlist.get(i).getProductId()) == 0){
passlist.get(i).setIsChecked(isChecked);
//Log.d(passlist.get(i).getProductName(), passlist.get(i).getIsChecked().toString());
}
}
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.label, viewHolder.text);
convertView.setTag(R.id.check, viewHolder.checkbox);
convertView.setTag(R.id.check, viewHolder.edittext);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.edittext.setTag(position);
viewHolder.text.setText(list.get(position).getProductName());
viewHolder.checkbox.setChecked(list.get(position).getIsChecked());
viewHolder.edittext.setText(list.get(position).getProdQuantity().toString());
return convertView;
}`
XML 코드 -
`
<CheckBox
android:id="@+id/takesocheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="4dip"
android:layout_marginRight="10dip"
android:focusable="false"
android:focusableInTouchMode="false">
</CheckBox>
<TextView
android:id="@+id/takesolabel"
android:layout_width="wrap_content"
android:layout_height="40sp"
android:textSize="25sp"
android:layout_toRightOf="@id/takesocheck">
</TextView>
<EditText android:id="@+id/takesoquantity"
android:layout_alignParentRight="true"
android:layout_width="120dip"
android:layout_height="wrap_content"
style="@style/EditText"
android:inputType="number"
android:layout_gravity="right"
android:selectAllOnFocus="true"/>
<View android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@drawable/blue"
android:layout_below="@id/takesocheck"/>
`
이 –
난이 당신을 도울 것입니다 와요 고마워요 시간 – Rocket
에 도움이되지 체크 내 업데이트 된 대답을 확인 http://stackoverflow.com/questions/11737294/checkbox-and-setonitemclicklistener-not-working-in-android –