我编写了代码来执行搜索并在XML文件中的搜索表单下方显示结果。
但是,通过动态创建TextView,它会不断添加更多TextView,因此每次执行搜索时TextView的数量都会增加5。我怎样才能重新使用TextViews以便更新要显示的文本而不是创建更多的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);
}
答案 0 :(得分:1)
1。当您动态动态地创建时,使用 setId(int i)
方法将 ID分配给他们。强>
<强> 2。无论何时需要,都可以使用 ids
重复使用TextView ..
答案 1 :(得分:1)
您需要做的是:
在搜索之前,您可以创建TextView并将它们添加到表中。不要忘记存储它们(ArrayList<TextView>
可以正常工作)
每次有搜索结果时,请浏览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");
}
}
}
答案 2 :(得分:1)
在您的第一行功能中,您可以添加table.removeAllViews()
。
这样,在执行新搜索之前,您的表始终会被清除。
如果你总是有5个结果,那么最好使用Pavel Dudka的方法:)