0

行ごとListViewに拡張してカスタムを実装しました。Relative Layout

すべての行にはCheckbox、Textview Edittext、. すべて正常に動作しています。それはそれを維持します。チェックOnItemClickListenerボックスとテキストビューを持つ行まで機能するリストビュー。しかし、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"/>

`

4

1 に答える 1