具有重复形式的动态形式

时间:2017-12-26 07:27:28

标签: android android-layout dynamic android-recyclerview xamarin.android

我想在Android中创建一个必须有表单的页面,它会根据某些值动态重复。

  

这样的事情:

enter image description here

此处形成用户名,密码,移动和地址字段,根据用户在此前页面中输入的数字重复。在这张图片中,表格重复两次,但可能是动态的任何次数。

我怎样才能实现这样的目标?我可以使用listview还是recyclerview?如果是,那么我将如何检索输入的值?

1 个答案:

答案 0 :(得分:3)

  

此处形成用户名,密码,移动和地址字段,根据用户在此前页面中输入的数字重复。在这张图片中,表格重复两次,但可能是动态的任何次数

ANS:您应该使用recyclerview

  

我怎样才能达到这样的目标?

recyclerview单件

创建类似的布局
  

我将如何检索输入的值?

您可以从 RecyclerView.Adapter

中获取值

<强> HERE IS THE SAMPLE CODE

  

Activity.java

public class AddmoreActivity extends AppCompatActivity {

    RecyclerView myRc;
    ArrayList<AddMorePojo> arrayList = new ArrayList<>();
    Button btnGetData;
    AddMoreAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_addmore);

        myRc = (RecyclerView) findViewById(R.id.myRc);
        btnGetData = (Button) findViewById(R.id.btnGetData);

        myRc.setHasFixedSize(true);
        myRc.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

        AddMorePojo addMorePojo = new AddMorePojo();
        addMorePojo.setAddress("");
        addMorePojo.setUserName("");
        arrayList.add(addMorePojo);


        adapter = new AddMoreAdapter(this, arrayList);
        myRc.setAdapter(adapter);

        btnGetData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ArrayList<AddMorePojo> pojoArrayList = adapter.getArrayList();

                for (int i = 0; i < pojoArrayList.size(); i++) {

                    Log.e("Name " + i, pojoArrayList.get(i).getUserName() + "");
                    Log.e("Pass " + i, pojoArrayList.get(i).getPass() + "");
                    Log.e("PHONE " + i, pojoArrayList.get(i).getPhone() + "");
                    Log.e("Address " + i, pojoArrayList.get(i).getAddress() + "");
                }
            }
        });

    }
}
  

Activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.user33.workingtestapp.AddmoreActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/myRc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


    <Button
        android:id="@+id/btnGetData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="get Data" />
</RelativeLayout>
  

pojo class

public class AddMorePojo {

    String userName, phone, pass, Address;

    public AddMorePojo() {
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }
}
  

适配器类

public class AddMoreAdapter extends RecyclerView.Adapter<AddMoreAdapter.ViewHolder> {
    Context context;
    ArrayList<AddMorePojo> arrayList;

    public AddMoreAdapter(Context context, ArrayList<AddMorePojo> arrayList) {
        this.context = context;
        this.arrayList = arrayList;
    }

    @Override
    public AddMoreAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(context).inflate(R.layout.addmorelayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(AddMoreAdapter.ViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return arrayList.size();
    }

    public ArrayList<AddMorePojo> getArrayList()
    {
        return arrayList;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        EditText edtName, edtPhone, edtPass, edtAdrress;

        public ViewHolder(View itemView) {
            super(itemView);

            edtName = itemView.findViewById(R.id.edtUname);
            edtPhone = itemView.findViewById(R.id.edtPhone);
            edtPass = itemView.findViewById(R.id.edtPass);
            edtAdrress = itemView.findViewById(R.id.edtAddress);

            edtName.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) {

                    AddMorePojo addMorePOJO = arrayList.get(getAdapterPosition());
                    addMorePOJO.setUserName(charSequence + "");
                    arrayList.set(getAdapterPosition(), addMorePOJO);


                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

            edtPhone.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) {

                    AddMorePojo addMorePOJO = arrayList.get(getAdapterPosition());
                    addMorePOJO.setPhone(charSequence + "");
                    arrayList.set(getAdapterPosition(), addMorePOJO);


                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });
            edtPass.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) {

                    AddMorePojo addMorePOJO = arrayList.get(getAdapterPosition());
                    addMorePOJO.setPass(charSequence + "");
                    arrayList.set(getAdapterPosition(), addMorePOJO);


                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

            edtAdrress.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) {

                    AddMorePojo addMorePOJO = arrayList.get(getAdapterPosition());
                    addMorePOJO.setAddress(charSequence + "");
                    arrayList.set(getAdapterPosition(), addMorePOJO);


                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });


        }
    }
}
  

适配器自定义布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardElevation="10dp"
    app:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/edtUname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter User Name" />

        <EditText
            android:id="@+id/edtPass"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="********"
            android:imeOptions="actionNext"
            android:inputType="textPassword" />


        <EditText
            android:id="@+id/edtPhone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter Phone Number"
            android:imeOptions="actionNext"
            android:inputType="numberDecimal" />

        <EditText
            android:id="@+id/edtAddress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter Address"
            android:imeOptions="actionNext"
            android:inputType="text" />


    </LinearLayout>

</android.support.v7.widget.CardView>