【发布时间】:2018-04-02 18:03:42
【问题描述】:
我目前正在开发一个计数器应用程序。通过按下“添加”按钮,会添加新的一行特定元素。文本视图和 2 个按钮是其中的 3 个元素。我在 textView 编号的两侧有 2 个按钮,当我按下左侧的按钮时,它会在 TextView 中添加一个。这工作正常但是当我动态添加一个新行时,当我按下按钮时,它会更改第一个动态添加的行的值,而不是我单击按钮的行。怎么可能让它获得单击按钮的行并将其添加到该特定行。代码如下:
主活动:
public class MainActivity extends AppCompatActivity {
private LinearLayout parentLinearLayout;
private int numtest = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
parentLinearLayout = (LinearLayout) findViewById(R.id.parent_linear_layout);
}
public void onAddField(View v) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.field, null);
// Add the new row before the add field button.
parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1);
}
public void addone(View v){
numtest+=1;
TextView t = (TextView) findViewById(R.id.counter);
t.setText(numtest+"");
}
public void subtractone(View v){
numtest-=1;
TextView t = (TextView) findViewById(R.id.counter);
t.setText(numtest+"");
}
}
field.xml:
<?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="50dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/edit_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:inputType="textWebEditText"/>
<Spinner
android:id="@+id/type_spinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:entries="@array/types"
android:gravity="right" />
<Button
android:id="@+id/add_button"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@android:drawable/ic_delete"
android:onClick="addone"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:text="0"
android:id="@+id/counter"
android:textSize="30dp"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/subtract_button"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@android:drawable/ic_delete"
android:onClick="subtractone"/>
</LinearLayout>
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_linear_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical" >
<Button
android:id="@+id/add_field_button"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="#555"
android:layout_gravity="center"
android:onClick="onAddField"
android:textColor="#FFF"
android:text="Add Field"
android:paddingLeft="5dp"/>
</LinearLayout>
提前致谢
【问题讨论】:
-
你从哪里打电话给
addone()..? -
不要在方法中初始化文本视图。在 onCreate 中执行。
标签: android android-linearlayout