0

検索を実行し、結果を XML ファイルの検索フォームの下に表示するコードを作成しました。

ただし、TextView を動的に作成することで、TextView を追加し続けるため、検索を実行するたびに TextView の数が 5 ずつ増えます。TextView を再利用して、TextView をさらに作成するのではなく、表示されるテキストを更新するにはどうすればよいですか?

for(int i=0; i<5; i++) {

    TextView altName = new TextView(getApplicationContext());

    altName.setText("blah");
    altName.setLayoutParams(new TableRow.LayoutParams(1));
    altName.setTextAppearance(getApplicationContext(), R.style.textSize);

    TableRow altNameTr = new TableRow(getApplicationContext());
    altNameTr.addView(altName);
    table.addView(altNameTr);
}
4

3 に答える 3

1

あなたがする必要があるのは:

  1. 検索の前に、TextView を作成してテーブルに追加します。それらを保存することを忘れないでください(ArrayList<TextView>うまくいくでしょう)

  2. 検索結果が得られるたびに、TextViews リストを調べて、それに応じて更新します (を使用setText()) 。

したがって、コードは次のようになります。

public class Search
{
    ArrayList<TextView> results = new ArrayList<TextView>();

    public void init(Context context)
    {
        TableRow altNameTr = new TableRow(context);
        TextView tv;

        for(int i=0; i<5; i++)
        {
            tv = new TextView(context);
            results.add(tv);
            altNameTr.addView(tv);
        }
        table.addView(altNameTr);
    }

    public void fillSearchResults()
    {
        for(int i=0; i<results.size(); i++) 
        {
            results.get(i).setText("Whatever you need to set here"); 
        }
    }
}
于 2012-07-26T18:42:07.110 に答える
1

1. TextView を動的に作成するときは、メソッドを使用してそれらに ID を 割り当てます。setId(int i)

2.ids必要な場所でTextViewを再利用します..

于 2012-07-26T18:37:15.473 に答える
1

関数の最初の行として、 を追加できtable.removeAllViews()ます。このようにして、新しい検索を実行する前にテーブルが常にクリアされます。

常に 5 つの結果が得られる場合は、Pavel Dudka の方法を使用することをお勧めします:)

于 2012-07-26T18:57:08.577 に答える