自从我正式开始学习编码以来,我刚刚进入第三个月,这是一个有趣的旅程。 目前,我正在尝试使用android studio创建一个简单的销售管理Android应用程序,这是一个简单的数据库示例代码。 我坚持设置正确的java代码来启用以下内容:
各个项目的格式如下:
<?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代码以启用这些计算并显示总量。 我知道设置点击听众是必需的,但我不确定以正确的方式设置它们,因为用户需要点击多个地方,即按钮,同时设置要购买的产品数量。 我花了最近五天寻找答案,但在我得到的所有答案中,都有一些缺失导致应用程序出错或者什么也没做。 我期待着您对如何最好地解决这一挑战的建议。 提前谢谢。
答案 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。
希望这会有所帮助〜