5

こんにちは、下の画面のような UI を開発しました。最後のプラス ボタン クリック イベントで UI の最後の行を追加したいと思います。

動的に追加する方法は知っていますが、複数の列を持つ行を動的に追加および削除する方法がわかりませんButtonEditText

編集:-最後の行に関する重要な点の 1 つは、各列が編集可能であることです。つまり、コンテンツを取得するには各列の参照が必要です。行を動的に追加する場合、プラス ボタンを新しい行に配置する必要があります。プラスボタンは上の行に移動する必要があります。

どうすればこれを行うことができますか。ガイドラインやアプローチがあれば幸いです。

ここに画像の説明を入力 これは私の XML ファイルです。

<?xml version="1.0" encoding="utf-8"?>
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  >

<RelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/navi_bar" />

<Button
    android:id="@+id/title_bar_btnBack"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="35dp"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="3dp"
    android:background="@drawable/back_button_image" />

<Button
    android:id="@+id/title_bar_btnExport"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="35dp"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/title_bar_btnBack"
    android:layout_marginRight="10dp"
    android:background="@drawable/export_button_normal" />

<!-- Create PDF Part 2 -->


<ImageView
    android:id="@+id/pdf_Upper_Image"
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/title_bar_btnBack"
    android:background="@drawable/grid_bg_part1" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/pdf_Upper_Image"
    android:layout_alignParentLeft="true"
    android:text="Kassenbuch"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="#3EC7F9"
    android:textSize="23dp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="2dp"
    android:layout_toRightOf="@+id/textView1"
    android:text="Name :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/txtName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignTop="@+id/textView2"
    android:layout_marginLeft="5dp"
    android:layout_toRightOf="@+id/textView2"
    android:text="Akshay"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<!-- Custom Pdf Part 2 -->

<ImageView
    android:id="@+id/pdf_Middle_Image"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/pdf_Upper_Image"
    android:background="@drawable/grid_bg_part2" 
    android:layout_marginLeft="1dp"
    android:layout_marginRight="1dp"
    />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="2dp"
    android:text="Einnahmen"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />


<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtName"
    android:layout_alignTop="@+id/txtName"
    android:layout_marginLeft="82dp"
    android:layout_toRightOf="@+id/txtName"
    android:text="Month :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignLeft="@+id/textView4"
    android:layout_marginBottom="2dp"
    android:text="Mand Nr. :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />



<TextView
    android:id="@+id/txtMand"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView5"
    android:layout_alignTop="@+id/textView5"
    android:layout_toRightOf="@+id/textView5"
    android:text="Mand"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />




<TextView
    android:id="@+id/txtMonth"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtName"
    android:layout_alignTop="@+id/textView4"
    android:layout_toRightOf="@+id/textView5"
    android:text="05"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" 
    android:textSize="12dp" 
    />



<TextView
    android:id="@+id/textView8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtYear"
    android:layout_alignTop="@+id/txtMonth"
    android:layout_toLeftOf="@+id/title_bar_btnExport"
    android:text="Year :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/textView9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView5"
    android:layout_alignBottom="@+id/textView5"
    android:layout_alignLeft="@+id/textView8"
    android:text="Blatt :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/txtYear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtMonth"
    android:layout_alignLeft="@+id/title_bar_btnExport"
    android:layout_alignTop="@+id/txtMonth"
    android:text="2012"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/textView3"
    android:text="Ausgabne"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" >
</TextView>

<TextView
    android:id="@+id/textView7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="15dp"
    android:layout_toRightOf="@+id/textView6"
    android:text="Bestand"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />

<TextView
    android:id="@+id/textView12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_toLeftOf="@+id/txtMand"
    android:text="Datum"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />

<TextView
    android:id="@+id/textView13"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_toLeftOf="@+id/textView5"
    android:text="Beleg Konto"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="8dp" />

<TextView
    android:id="@+id/textView14"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView13"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginRight="03dp"
    android:layout_toLeftOf="@+id/textView13"
    android:text="Gegen Konto"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="08dp" />

<TextView
    android:id="@+id/textView15"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView3"
    android:layout_alignRight="@+id/textView1"
    android:layout_below="@+id/textView14"
    android:text="Anfangsbestand/Ubertrag"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="9dp" />

<TextView
    android:id="@+id/textView11"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView13"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="25dp"
    android:layout_toRightOf="@+id/textView12"
    android:text="USt satz."
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="09dp" />

<TextView
    android:id="@+id/txtBlatt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView9"
    android:layout_alignBottom="@+id/textView9"
    android:layout_toRightOf="@+id/textView9"
    android:text="Blatt"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />


<TextView
    android:id="@+id/textView10"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView11"
    android:layout_alignLeft="@+id/textView9"
    android:text="Text"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />

<include android:id="@+id/firstRow"
     layout="@layout/custom_pdf3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/pdf_Middle_Image"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"/>


 </RelativeLayout>

ありがとう

4

8 に答える 8

2

完全な行を表すレイアウトを作成すると、次を使用できます。

public View inflate (int resource, ViewGroup root)from (パッケージLayoutInflater内のクラス)から、指定された XML リソース (新しい行など) をインフレートします。android.viewnew view hierarchy

これで、このビュー (行) を特定のタグを使用してメイン レイアウトに動的に追加できます (ボタンをレイアウトに動的に追加するなど)。

于 2012-09-07T12:30:59.480 に答える
1
  1. リスト ビューの行を表す XML レイアウト ファイルを作成します。
  2. 基本アダプタを使用して、カスタム アダプタを実装します。
  3. このgetView()メソッドでは、Xml レイアウトをインフレートし、内部アイテムを参照します (を使用して、そこにouterLayout.findViewById()設定しListeners、最後returnview.
  4. リスナーの実装を記述します。

簡単ですか?:-)

于 2012-09-10T06:18:29.700 に答える
1

実行時にレイアウト全体を作成してみてください。すべての ur 列を含む単一の行を作成し、最後の列の可視性をなくなったように設定します。プラスボタンを押したときの可視性を変更します。タイプ相対レイアウトの行を作成すると良いと思います。行を削除したい場合は、メインレイアウトの相対レイアウトを数えてから、削除したいインデックスを削除する必要があります。

于 2012-09-10T11:54:37.960 に答える
0

さまざまなことを試した後、以下のように問題を解決しました.xmlに特定の変更を加えましLinearLayoutScrollView.

そして、完全な行を持つ1つのxmlファイルを作成しました.今私の仕事はLinearLayout、次の方法で行ったxmlにそのxmlを追加することです.私は毎回ボタンクリックイベントでこのメソッドを呼び出しています.

     public void AddDynamicView() {

    linearLayout = (LinearLayout) findViewById(R.id.show_pdfTableLayout);

    layoutInflater = (LayoutInflater) getApplicationContext()
            .getSystemService(LAYOUT_INFLATER_SERVICE);
    view = layoutInflater.inflate(R.layout.custom_pdf3, null);

    linearLayout.addView(view);
    list.add(view);  // Here I have created list of View so that I can get the id of specific view.
          }

私はこれを試してみましたTableLayoutが、行全体を占有することに問題がありました.それが私が使用した理由LinearLayoutです.

于 2012-09-15T08:06:34.603 に答える
0

カスタム ビューを操作する必要があります。次に、各ビューは複雑なビューになる可能性があり、好きなことを何でも行うことができます。この作業は簡単ではありません。

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="2dp"
    android:layout_toRightOf="@+id/textView1"
    android:text="Name :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<com.sample.MyCustomView
    android:id="@+id/myView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

そして、MyCustomView線形レイアウトまたはこれまでのものである可能性があります。

于 2012-09-10T06:46:01.553 に答える
0

よくわからなかったかも!!!

ListView と Adapter を使用して、質問に記載されているすべてのことを実行できます。フィールドを保持する配列を提供し、アダプターに配列をフィードし、listView にアダプターをフィードできます。新しい行が必要な場合は、配列に要素を追加するだけです。行を削除する場合は、配列から削除するだけです。アイテムを並べ替えたい場合は、配列を並べ替えるだけです。前/次を選択したい場合は、リストビュー選択方法を使用してください。

絶対に正しいアプローチではないあなたの答えをチェックしたのだろうかと思いました。確かにそうですが、ターゲット ui が複雑な場合、動的で最適化された ListView よりもページのレンダリングとスクロールに多くの時間が必要になります。

私の答えが良さそうだと思われる場合は、いくつかのコードで更新するようお知らせください。

于 2012-09-16T08:24:07.680 に答える
0

例を通して最もよく理解できると思います。物事を少し単純化しましょう。あなたの主なレイアウトがこれであるとしましょう:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/main_layout" >

</TableLayout>

TableLayoutこれはまだビューがない単純なものです (事前に焼き付けられた行を持つことができます)。動的に追加したいものを作成しTableRows、そのサブビューを個別に処理したいと思いませんか? TableRow全体をxmlで作成できます:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tablerow_textview"
        android:text="Hello" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tablerow_button"
        android:text="World" />
</TableRow>

次にJava部分。これらの行のうち 10 行を TableLayout に追加し、各行ボタンを個別に処理するとします。次のように実行できます (Context オブジェクトにアクセスできる必要があります)。

// get the main TableLayout from xml
TableLayout layout = (TableLayout) findViewById(R.id.main_layout);  

// get a LayoutInflater object. 'this' is the current Activity
LayoutInflater inflater = LayoutInflater.from(this);

for(int i=0; i<10; i++)
{
    //Create an inflated instance of that layout
    TableRow row = (TableRow) inflater.inflate(R.layout.table_row, null);

    //Notice, that we call the findViewById() function on the previously 
    //inflated layout, which means, that we can only access its subviews
    Button rowButton = (Button) row.findViewById(R.id.tablerow_button);
    TextView rowText = (TextView) row.findViewById(R.id.tablerow_textview);

    //Now that you have those Views, you can do whatever you want with them, (set
    an onClickListener, change the text, etc)

    //finally we need to add the row to the table
    layout.addView(row);
}

ラッパーが独自の getter-setter 関数を使用して、インフレートされたレイアウト用のクラスを作成し、それを new 演算子でインスタンス化するだけで、すべてのインフレがバックグラウンドで実行される場合も良い考えです。

于 2012-09-10T06:16:23.350 に答える
0

上記のxmlで

あなたはTextviewですべてのことを行い、それを調整しました

Tablelayoutそれを使用する代わりに、xml ファイルにを作成する必要があります。

新しい tablerow を動的に作成する必要がある onButtonClick イベントを使用してコンポーネントを追加しtablerow.addview(componentsname)、最後に tablerow を tablelayout に追加します

シンプルなテーブルレイアウト

于 2012-09-14T11:09:10.363 に答える