【发布时间】:2018-02-16 14:46:32
【问题描述】:
我的应用程序中有一个 RecyclerView,其中包含两个按钮。一个向 RecyclerView 添加一个项目(两个 EditTexts),另一个用于获取在 EditTexts 中输入的值并将它们发送到另一个活动。
RecyclerView 中的项目数量是根据用户的需要而定的。而且我不知道如何获取用户在这些 EditTexts 中输入的所有值并将它们发送到另一个活动。
(EditTexts 只得到 numberDecimal 类型,我想对这些值做一些数学运算)
更新:添加了 EntryData 和 MainActivity 类。
适配器:
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.DataViewHolder> {
private Context context;
private List<EntryData> datas = new ArrayList<>();
@Override
public DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View view = layoutInflater.inflate(R.layout.item_surface, parent, false);
return new DataViewHolder(view);
}
@Override
public void onBindViewHolder(DataViewHolder holder, int position) {
holder.bindData(datas.get(position));
}
@Override
public int getItemCount() {
return datas.size();
}
public static class DataViewHolder extends RecyclerView.ViewHolder {
private EditText lengthEditText;
private EditText diameterEditText;
public DataViewHolder(View itemView) {
super(itemView);
lengthEditText = itemView.findViewById(R.id.tv_item_length);
diameterEditText = itemView.findViewById(R.id.tv_item_diameter);
}
public void bindData(EntryData entryData) {
lengthTextView.setText(entryData.getLength());
diameterTextView.setText(entryData.getDiameter());
}
}
public void addData(EntryData entryData) {
datas.add(entryData);
notifyItemInserted(datas.size() - 1);
}
}
EntryData 类:
public class EntryData {
private String length;
private String diameter;
public String getLength() {
return length;
}
public void setLength(String length) {
this.length = length;
}
public String getDiameter() {
return diameter;
}
public void setDiameter(String diameter) {
this.diameter = diameter;
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupViews();
}
private void setupViews() {
RecyclerView recyclerView= findViewById(R.id.rv_main_data);
recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
final DataAdapter adapter= new DataAdapter();
recyclerView.setAdapter(adapter);
Button addDataButton = findViewById(R.id.btn_main_addData);
addDataButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EntryData entryData = new EntryData();
adapter.addData(entryData);
}
});
}
}
item_surface.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_weight="2">
<EditText
android:id="@+id/tv_item_length"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="length"
android:gravity="center"
android:layout_marginTop="4dp"
android:inputType="numberDecimal"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"
android:layout_weight="1"/>
<EditText
android:id="@+id/tv_item_diameter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:hint="diameter"
android:gravity="center"
android:layout_marginTop="4dp"
android:layout_marginRight="4dp"
android:layout_marginLeft="2dp"
android:layout_weight="1"/>
</LinearLayout>
【问题讨论】:
-
您能否更新您的问题以包含 EntryData 类文件?
-
以及包含recyclerview的类的代码
-
@Larpee 添加了课程
-
@karique 完成...
-
您是否愿意使用双向 Android 数据绑定?它可能会使这变得容易得多。
标签: android android-recyclerview