2015-08-24 2 views
0

На моем основном экране отображается информация с пользовательского ввода.Программно добавление TextView в существующий файл XML

Теперь все на этом экране добавляется с помощью XML, кроме TextView «Kool» в верхнем левом углу. Теперь я хочу, чтобы получить информацию от пользователя и добавить ее под первой строкой информации.

Я разобрал экран, который вводит пользователя, проблема заключается в том, что проблема заключается в том, чтобы сделать макет идеальным. Теперь я добавил «Kool» TextView программно, но макет неправильный.

Как я могу сделать это так, чтобы текстовый текст «Kool» находился под датой «20/08/15». Каждый раз, когда я использую метод setHeight, он делает невидимым TextView.

Код:

public class AnalysisPage extends Activity { 

Button savebutton,cancelbutton; 
EditText dateinput,weightinput,repsinput; 
int dd,mm,yy; 

private TextView texty = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dumbbellpress); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions,menu); 
    return super.onCreateOptionsMenu(menu); 

} 
@Override 
public boolean onOptionsItemSelected(MenuItem item){ 


    switch (item.getItemId()){ 
     case R.id.addinfo: 
      Dialog dialog = new Dialog(AnalysisPage.this); 
      dialog.setTitle(" Enter your STATS brah"); 
      dialog.setContentView(R.layout.datainput); 

      dateinput = (EditText)dialog.findViewById(R.id.editDate); 
      final Calendar c = Calendar.getInstance(); 
      dd = c.get(Calendar.DAY_OF_MONTH); 
      mm = c.get(Calendar.MONTH); 
      yy = c.get(Calendar.YEAR); 

      dateinput.setText(new StringBuilder().append(dd).append("/").append(mm+1).append("/").append(yy)); 

      dialog.show(); 


      weightinput = (EditText)dialog.findViewById(R.id.editWeight); 
      repsinput = (EditText)dialog.findViewById(R.id.editReps); 

      savebutton = (Button)dialog.findViewById(R.id.btnSave); 
      cancelbutton = (Button)dialog.findViewById(R.id.btnCancel); 

      savebutton.setOnClickListener(new View.OnClickListener() { 



       @Override 
       public void onClick(View view) { 
        RelativeLayout views = (RelativeLayout)findViewById(R.id.xxx); 

        texty = new TextView(AnalysisPage.this); 
        texty.setTextSize(28); 
        texty.setText("Kool"); 



        views.addView(texty); 

       } 
      }); 

      cancelbutton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        dialog.cancel(); 
       } 
      }); 

      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

код XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" android:weightSum="1" android:id="@+id/statslayout"> 

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" android:id="@+id/xxx"> 

    <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="100dp" android:id="@+id/tableRow3" android:layout_alignParentTop="true" 
      android:layout_alignParentStart="true" android:layout_marginStart="72dp"> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="Dumbbell Press Stats!" 
       android:id="@+id/textView"/> 
    </TableRow> 

    <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="100dp" android:id="@+id/tableRow" 
      android:layout_alignParentTop="true" android:layout_alignEnd="@+id/tableRow3" 
      android:layout_marginTop="49dp" android:layout_alignBottom="@+id/tableRow3"> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Date" 
       android:layout_weight="0.22" 
       android:id="@+id/btnDate" 
       /> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text=" Weight" 
       android:layout_weight="0.22" 
       android:id="@+id/txtWeight" 
       /> 

     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text=" Reps" 
       android:layout_weight="0.22" 
       android:id="@+id/btnReps" 
       /> 


    </TableRow> 
    <TableRow 
      android:layout_width="wrap_content" 
      android:layout_height="200dp" 
      android:layout_below="@+id/tableRow" android:layout_alignParentStart="true" android:id="@+id/tableRow4"> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="20/08/15" 
       android:id="@+id/textView2" android:layout_below="@+id/tableRow" 
       android:layout_alignStart="@+id/tableRow3"/> 
    </TableRow> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text=" 8" 
      android:id="@+id/textView7" 
      android:layout_marginEnd="82dp" android:layout_below="@+id/tableRow" 
      android:layout_alignEnd="@+id/tableRow3"/> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="50kg" 
      android:id="@+id/textView6" 
      android:layout_marginStart="43dp" 
      android:layout_below="@+id/tableRow3" android:layout_toEndOf="@+id/tableRow4"/> 
</RelativeLayout> 

Мой конец (мечта) цель это с помощью Java я сделать полные идеально отформатированные строки, которые содержат дату, Вес и Reps в их уважаемых колонках. И несколько строк этого или отлично отформатированы с использованием Java.

Image (это в XML не в Java)

ответ

2

Вместо добавления TextView (ы) программно использовать ListView. Это решит ваши проблемы полностью. Вы бы использовали пользовательский адаптер setAdapter(), который ваш ListView будет устанавливать как его адаптер (который предоставляет данные List it), и добавлять новые элементы строки каждый раз, когда вы нажимаете кнопку, добавляющую новые элементы. Это означало бы замену вашего бита TableRow и использование ListView в RelativeLayout. Кроме того, вы можете добавить пользовательский заголовок в ListView для замены того заголовка, который вы уже используете (источник: addHeaderView())

Посмотрите на свои строки, кажется, что у них есть поля: «Дата», «Вес» и «Дата», репс». Это означало бы создание пользовательского объекта Java, который имеет эти три поля, и создать тип объекта элементов вашего адаптера ListView. Я могу предоставить код стартера, если вам это действительно нужно, но это поможет вам лучше всего использовать предоставленную мной документацию, чтобы научить себя, как использовать ListView.

Учебник: ListView tutorial

Edit: Еще один бонус: ListView ручки позволяет пользователю прокручивать как более и более строк добавляются в этот список вашего. Еще одна причина просто выбрать ListView :)

+0

Хорошо, спасибо, я просмотрел документацию. Не могли бы вы просто предоставить немного стартового кода? Просто он отображает секцию заголовка (Date, Weight, Reps). – bob9123

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