首页 > 解决方案 > 将增加/减少按钮与编辑文本(数字)混合

问题描述

我有一个在线安卓应用商店,当用户尝试输入大量数量时,他应该继续点击增加按钮,(你可以想象如果他想输入 100 个项目有多难)。因此,为了解决它,我尝试将 EditText 添加到增加和减少按钮,增加/减少按钮效果很好。 问题是:当我通过使用 EtideText 键入数量来输入值时,该值不会传递给下一个活动

布局:

                <LinearLayout
                android:id="@+id/ll_controller"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_margin="@dimen/value_3"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@drawable/cart_round_button"
                android:gravity="center"
                android:orientation="vertical"
                android:padding="@dimen/value_3">

                <ImageView
                    android:id="@+id/tvIncrement"
                    android:layout_width="45dp"
                    android:layout_height="45dp"
                    app:srcCompat="@drawable/ic_plus_sign" />


                <EditText
                    android:id="@+id/tvQuantity"
                    style="@style/txt_black_medium"
                    android:layout_width="45dp"
                    android:layout_height="45dp"
                    android:layout_marginTop="@dimen/value_1"
                    android:layout_marginBottom="@dimen/value_1"
                    android:gravity="center"
                    android:text="1"
                    android:textColor="@color/colorPrimary"
                    android:textSize="24sp"
                    android:ems="10"
                    android:inputType="number" />



                <ImageView
                    android:id="@+id/tvDecrement"
                    android:layout_width="45dp"
                    android:layout_height="45dp"
                    app:srcCompat="@drawable/ic_minus_sign" />

            </LinearLayout>

活动:

        holder.tvQuantity.setTextColor(Color.parseColor(((BaseActivity) activity).getPreferences().getString(Constant.APP_COLOR, Constant.PRIMARY_COLOR)));
        holder.tvQuantity.setText(list.get(position).getQuantity() + "");

        holder.tvIncrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int quntity = Integer.parseInt(holder.tvQuantity.getText().toString());
                quntity = quntity + 1;

                if (list.get(position).isManageStock()) {
                    if (quntity > list.get(position).getStockQuantity()) {
                        Toast.makeText(activity, ((BaseActivity) activity).getString(R.string.only) + "" + list.get(position).getStockQuantity() + "" + ((BaseActivity) activity).getString(R.string.quntity_is_avilable), Toast.LENGTH_SHORT).show();
                    } else {

                        holder.tvQuantity.setText(quntity + "");
                        databaseHelper.updateQuantity(quntity, list.get(position).getProductid(), list.get(position).getVariationid() + "");
                        list.get(position).setQuantity(quntity);
                        onItemClickListner.onItemClick(position, RequestParamUtils.increment, quntity);
                    }
                } else {
                    holder.tvQuantity.setText(quntity + "");
                    databaseHelper.updateQuantity(quntity, list.get(position).getProductid(), list.get(position).getVariationid() + "");
                    list.get(position).setQuantity(quntity);
                    onItemClickListner.onItemClick(position, RequestParamUtils.increment, quntity);
                }

            }
        });

        holder.tvDecrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int quntity = Integer.parseInt(holder.tvQuantity.getText().toString());
                quntity = quntity - 1;
                if (quntity < 1) {
                    quntity = 1;
                }
                holder.tvQuantity.setText(quntity + "");
                databaseHelper.updateQuantity(quntity, list.get(position).getProductid(), list.get(position).getVariationid() + "");
                list.get(position).setQuantity(quntity);
                onItemClickListner.onItemClick(position, RequestParamUtils.decrement, quntity);
            }
        });
        
    }

}

标签: javaandroidandroid-studio

解决方案


你应该将它实施到你的成绩文件中

implementation 'com.github.travijuu:numberpicker:1.0.7'

在 XML 布局文件中。

<com.travijuu.numberpicker.library.NumberPicker
    android:id="@+id/number_picker"
    android:layout_width="130dp"
    android:layout_height="40dp"
    numberpicker:min="0"
    numberpicker:max="10"
    numberpicker:value="-5"
    numberpicker:unit="1"
    numberpicker:focusable="false"
    numberpicker:custom_layout="@layout/number_picker_custom_layout" />   

       

在 java 文件中。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        NumberPicker numberPicker = (NumberPicker) findViewById(R.id.number_picker);
        numberPicker.setMax(15);
        numberPicker.setMin(5);
        numberPicker.setUnit(2);
        numberPicker.setValue(10);
    }
}

推荐阅读