在由数据库

时间:2017-05-05 17:19:15

标签: java android database sqlite onclick

自从我正式开始学习编码以来,我刚刚进入第三个月,这是一个有趣的旅程。 目前,我正在尝试使用android studio创建一个简单的销售管理Android应用程序,这是一个简单的数据库示例代码。 我坚持设置正确的java代码来启用以下内容:

  • 用户通过单击复选框(@ + id / choice)
  • 选择要购买的产品
  • 他输入了购买示例5(@ + id / quantity)
  • 的产品数量
  • 应用程序应该乘以产品的价格(@ + id / price)和数量并显示总数(@ + id / total)。

各个项目的格式如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="@dimen/activity_margin">
    <CheckBox
        android:id="@+id/choice"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
    <TextView
        android:id="@+id/name"
        android:layout_width="70dp"
        android:layout_height="match_parent"
        android:text="Soda" />
    <TextView
        android:id="@+id/price"
        android:layout_width="70dp"
        android:layout_height="match_parent"
        android:text="1000/=" />
    <TextView
        android:layout_width="10dp"
        android:layout_height="match_parent"
        android:text="*" />
    <EditText
        android:id="@+id/quantity"
        android:layout_width="80dp"
        android:layout_height="match_parent"
        android:hint="amount"
        android:inputType="number" />
    <TextView
        android:layout_width="10dp"
        android:layout_height="match_parent"
        android:text="=" />
    <TextView
        android:id="@+id/total"
        android:layout_width="80dp"
        android:layout_height="match_parent"
        android:hint="total" />
</LinearLayout>

(我删除了一些抛光代码,以缩短代码并仍显示最重要的部分)。 产品的名称和价格由SQLite数据库填充,该数据库使用通常的Java文件(如Contract,Dbhelper,Provider和Cursor Adapter)创建。 用户将在另一个活动中输入产品名称和价格,所有产品甚至超过50种产品,将使用以下列表视图布局上的该格式填充:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SalesActivity2">
    <ListView
        android:id="@+id/sales_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</RelativeLayout>

到目前为止,其他一切工作正常。用户可以输入他选择的尽可能多的产品。数据库能够根据格式和布局填充列表视图中的产品。 挑战在于在SalesActivity2中设置正确的Java代码以启用这些计算并显示总量。 我知道设置点击听众是必需的,但我不确定以正确的方式设置它们,因为用户需要点击多个地方,即按钮,同时设置要购买的产品数量。 我花了最近五天寻找答案,但在我得到的所有答案中,都有一些缺失导致应用程序出错或者什么也没做。 我期待着您对如何最好地解决这一挑战的建议。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以向您的edittext添加监听器,该监听器从用户那里获取产品数量。默认情况下,它应为空白或禁用,当用户选择该产品时,其文本应更改为1(根据我的逻辑),如果用户自己制作更改其中的值,然后计算总金额。

现在为了获得该事件,您可以在EditText上添加TextWatcher

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            // TODO Auto-generated method stub
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {

            // TODO Auto-generated method stub
        }
    });

每当用户更改文字时,您都可以计算更新的总金额。

答案 1 :(得分:0)

1。OnCheckedChangeListener添加到CheckBox,以便在用户第一次total时显示单quantity的{​​{1}}价格click并清除Checkbox&amp;用户quantity total时的un-check价格。

2。CheckBox添加到TextChangedListener,以显示用户开始输入EditText时的总价。

试试这个:

quantity
在您的 CheckBox checkBoxChoice = (CheckBox) findViewById(R.id.choice); final EditText editQuantity = (EditText) findViewById(R.id.quantity); final TextView textPrice = (TextView) findViewById(R.id.price); final TextView textTotal = (TextView) findViewById(R.id.total); checkBoxChoice.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { if (checked) { // Required to show total price for single quantity when user click on checkbox int quantity = 1; int price = Integer.parseInt(textPrice.getText().toString()); int total = price * quantity; textTotal.setText(String.valueOf(total)); } else { // Required to clear quantity and total price when user un-check checkbox editQuantity.setText("0"); textTotal.setText("0"); } } }); // Required to show total price when user start typing quantity editQuantity.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { int quantity = Integer.parseInt(charSequence.toString()); int price = Integer.parseInt(textPrice.getText().toString()); int total = price * quantity; textTotal.setText(String.valueOf(total)); } @Override public void afterTextChanged(Editable editable) { } }); TextView上

仅供参考,,请尝试仅设置价格值(price)而不是字符串(1000),因为我们要从中获取价格1000/= TextView。

希望这会有所帮助〜