2

アイテムをスクロールビューに動的に追加するために、さまざまなチュートリアルに従おうと何時間も試みてきましたが、何も機能していないようです...

アイデアは、チェックボックスの横にある TextView に文字列を追加することです。これは別の xml ファイルで行われ、追加し続けるにつれてリストが大きくなるようにしたかっただけです。

今のところ、追加されている文字列は 1 つだけです (最後の文字列が前の文字列に置き換えられます)。それを変更しようとすると、アプリが動作しなくなります。現状のコードは次のとおりです。

TableLayout addPlayersTableLayout;

TableRow tableRow1;

ScrollView addPlayersScrollView;

String[] players = new String[]{ "Blah", "Whatever", "Test", "Nipah!"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPlayersTableLayout = (TableLayout)findViewById(R.id.TableLayout1);

    tableRow1 =(TableRow)findViewById(R.id.tableRow1);

    addPlayersScrollView = (ScrollView)findViewById(R.id.playersScrollView);

    insertPlayerInScrollView();     
}

アイテムを追加するはずの関数の実装は次のとおりです (add_player_row.xml は、アイテムと見なされるテキストビューとチェックボックスが作成されたファイルです)。

private void insertPlayerInScrollView() {
    LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View newPlayerRow = inflator.inflate(R.layout.add_player_row, null);

    TextView newPlayerTextView = (TextView) newPlayerRow.findViewById(R.id.addPlayerTextView);

    CheckBox playerCheckBox = (CheckBox)findViewById(R.id.playerCheckBox);
    newPlayerTextView.setText(players[1]);
    addPlayersTableLayout.addView(newPlayerRow,0);

}

ほとんどのフォーラムやチュートリアルでは addPlayersScrollView を使用するように言われますが、そうするとアプリがクラッシュします。それで...何かアイデアはありますか?どうもありがとうございました!

4

1 に答える 1

8

私はあなたと似たようなものに直面しています。私はこのようなレイアウトを持っています:

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


            <TableLayout
                android:id="@+id/tableLayoutList"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" /> 

</ScrollView>

行を次のように定義します (mRowLayout.xml):

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

    <CheckBox
        android:id="@+id/checkBoxServEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</TableRow>

次に、次のコードを使用して行を膨らませます。

private void fillTable(View v, Cursor c) {

TableLayout ll = (TableLayout) v.findViewById(R.id.tableLayoutList);

View mTableRow = null;
int i = 0;
while(!c.isAfterLast()){
    i++;
    mTableRow = (TableRow) View.inflate(getActivity(), R.layout.mRowLayout, null);

     CheckBox cb = (CheckBox)mTableRow.findViewById(R.id.checkBoxServEmail);
     cb.setText( c.getString(c.getColumnIndex(Empleado.EMAIL)));


     mTableRow.setTag(i);

    //add TableRows to TableLayout
    ll.addView(mTableRow);

    c.moveToNext();
}
}

ここで行おうとしているのは、行を動的に膨らませることです。カーソルには、データベースから表示したいアイテムがあります。これで問題が解決するかどうかわかりません。お知らせ下さい。

于 2013-06-21T19:31:31.523 に答える