2016-12-02 2 views
0

Вращающийся сверху указатель указывает количество членов вашей семьи.Как добавить определенное количество строк в таблицу на основе выбора основного прядильника (сверху)?

Если выбрано 3, то 3 строки должны быть созданы с текстовыми полями, полем цифр, счетчиком все сразу.

Это скриншот моего приложения:

screenshot

activity_main3

<?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" 
    android:orientation="vertical" 
    tools:context="com.example.technet_pc2.myapplication.MainActivity3"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Family members" 
     android:id="@+id/textView12" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="100dp" 
     android:id="@+id/tablelayout1"> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Sr No." 
       android:id="@+id/textView14" 
       android:layout_column="0" 
       android:ems="2" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Name" 
       android:id="@+id/textView15" 
       android:layout_column="1" 
       android:ems="7"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Age" 
       android:id="@+id/textView16" 
       android:layout_column="2" 
       android:ems="3"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Sex" 
       android:id="@+id/textView17" 
       android:layout_column="3" 
       android:ems="2"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Relation" 
       android:id="@+id/textView18" 
       android:layout_column="4" 
       android:ems="4"/> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="1" 
       android:id="@+id/textView19" 
       android:layout_column="0" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/editText8" 
       android:layout_column="1" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="number" 
       android:ems="2" 
       android:id="@+id/editText9" 
       android:layout_column="2" /> 

      <Spinner 
       android:layout_width="1dp" 
       android:layout_height="1dp" 
       android:id="@+id/spinner3" 
       android:layout_column="3" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/editText10" 
       android:layout_column="4" /> 
     </TableRow> 
    </TableLayout> 

    <Spinner 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinner4" 
     android:layout_below="@+id/textView12" 
     android:layout_alignLeft="@+id/textView12" 
     android:layout_alignStart="@+id/textView12" 
     android:layout_alignRight="@+id/textView12" 
     android:layout_alignEnd="@+id/textView12" 
     android:spinnerMode="dropdown" /> 

</RelativeLayout> 

MainActivity3.java

public class MainActivity3 extends AppCompatActivity { 


    Button b1; 
    TableLayout t1; 
    Spinner sp; 
    ArrayAdapter ad; 





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

     b1=(Button)findViewById(R.id.button); 
     sp=(Spinner)findViewById(R.id.spinner4); 

    /* b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       TableRow row = new TableRow(MainActivity3.this); 
       //add Layouts to your new row 
       TextView txt = new TextView(MainActivity3.this); 
       txt.setText("1"); 
       row.addView(txt); 
       //add your new row to the TableLayout: 
       TableLayout t1 = (TableLayout) findViewById(R.id.tablelayout1); 
       t1.addView(row); 
      } 
     });*/ 

     t1 = (TableLayout)MainActivity3.this.findViewById(R.id.tablelayout1); 

     ad=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item); 
     ad.add("Select"); 
     ad.add("1"); 
     ad.add("2"); 
     sp.setAdapter(ad); 



      if (sp.getSelectedItem().toString().equals("Select")) { 

     } 
     else if (sp.getSelectedItem().toString().equals("1")) { 
      // Inflate your row "template" and fill out the fields. 
      TableRow row = (TableRow) LayoutInflater.from(MainActivity3.this).inflate(R.layout.attrib_row, null); 
       ((TextView)row.findViewById(R.id.textView19)).getText(); 
       t1.addView(row); 





     } 



    } 
} 

attrib_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="1" 
       android:id="@+id/textView19" 
       android:layout_column="0" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/editText8" 
       android:layout_column="1" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="number" 
       android:ems="2" 
       android:id="@+id/editText9" 
       android:layout_column="2" /> 

      <Spinner 
       android:layout_width="1dp" 
       android:layout_height="1dp" 
       android:id="@+id/spinner3" 
       android:layout_column="3" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/editText10" 
       android:layout_column="4" /> 
</TableRow> 

ответ

0

Вы можете использовать recyclerview с пунктом ресайклера, как это:

enter image description here

, а затем в OnitemClickListner фильеры вам просто нужно обновить счетчик в адаптере или добавить товар в arraylist<CustomObject>, а затем вызвать notifyDataSetChanged()

Вы можете обновить серийный номер в качестве позиции + 1 в адаптере

+0

Я пробовал это, но как я могу написать «если выбрано 1 {// код //}» –

+0

, вам нужно сохранить числа в целочисленном массиве, таком как int [], и тогда вы должны установить onItemselectedlistner в spinner и в этом вы получите позицию и используя эту позицию, вы можете получить номер из массива int, а затем вы можете использовать случай переключения или просто использовать if else if! –

+0

okay Я попробовал это с помощью else, если таблица не обновляется, я думаю, что у меня нет установленной позиции, как это сделать? –

0

Вы должны добавить строку динамически, а не поместить их статически в макете. Для этого вам нужно извлечь динамическую строку (ту, которая имеет вид EditText) в другой xml, и как только селектор выбирает количество записей, раздувает правильное количество строк и добавляет их в таблицу.

Предлагаю вам ознакомиться с ответами на вопрос this question и внести необходимые изменения. Не забудьте указать уникальные идентификаторы для каждой из строк, поскольку вы будете собирать данные или поочередно использовать шаблон ViewHolder для хранения и обработки каждой строки и ее данных.

+0

Я все еще не понимаю, как они добавляют строки, при нажатии кнопки или выпадающем списке? –

Смежные вопросы