【发布时间】:2020-11-08 19:05:47
【问题描述】:
我是 android 新手,请帮我找到适合这种情况的解决方案。
请参考 UI(图片链接)。如果用户单击添加按钮新列表视图应该膨胀,我正在尝试这样做。当用户按下特定列表视图上的删除按钮时,整行都应该被删除。
问题1:当按下删除时,错误的行被删除了。
问题 2:当用户按下开始组 id 时,所有添加的行的值都应该保存在 arraylist 中。
问题 3:我必须在添加和删除中应用限制.. 用户不能添加超过 20 行,并且至少有一行可用,即用户不能删除所有行。
用户界面看起来像:App UI
代码:每行的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="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="1" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="time"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="delete" />
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
UI部分的XML代码
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/leanierLayout_test"
android:orientation="vertical">
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"
/>
OnCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ap_auto_start_test);
ArrayAdapter<String> adapter2;
adapter2 = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,groupId);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Button add = findViewById(R.id.button1);
final LinearLayout data = (LinearLayout) findViewById(R.id.leanierLayout_test);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
LayoutInflater li = LayoutInflater.from(getApplicationContext());
final View view = li.inflate(R.layout.tryandtest,null);
data.addView(view);
Spinner s = view.findViewById(R.id.spinner);
s.setAdapter(adapter2);
Button delete= findViewById(R.id.button2);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
data.removeViewInLayout(view);
}
});
}catch (Exception e){
e.printStackTrace();
Log.d("infilate exception", e.toString());
}
}
});
}
【问题讨论】:
-
为什么不用recyclerView???
-
使用 recyclerView 实现这个更简单吗?
-
所有问题(问题:1,2,3)是否都使用 recyclerView 提前解决了?
-
当然可以。
-
如果您需要更多信息,请务必告诉我。
标签: java android android-layout arraylist android-linearlayout