0

TextView在循环中动态添加了一个。单击按钮时,我想清除文本视图中的现有文本并为其设置一些其他文本。我怎样才能做到这一点?

这是我当前的代码:

ArrayList<String> Cheif_ComplaintNew = new ArrayList<String>();
int cc_Arraylist_length = Cheif_ComplaintNew.size();
android.widget.TextView cc_new  = new android.widget.TextView(getApplicationContext());

for(int i=0; i<cc_Arraylist_length; i++)
{
    cc_new.setId(i);
    cc_new.setText(Cheif_ComplaintNew.get(i)); 
    cc_new.setTextColor(getResources().getColor(R.color.black));
    cc_new.setTypeface(null,android.graphics.Typeface.ITALIC);
    cc_new.setTextSize(14);
    cc_linearNew.addView(cc_new);
    System.out.println("id"+i);
}

单击按钮后,列表将被清除,新数据将存储在其中。我想通过清除旧数据在同一文本视图中显示新数据。

4

4 回答 4

1

您可以在创建文本时将文本添加到文本框,也可以在创建文本时为其分配一个类变量,稍后您可以向其中添加文本。

 TextView dynamicTextView;

 ...

 private void CreateNewTextView()
 {
     dynamicTextView = Your New Text View;
 }
 ...
 private void ChangeTheText()
 {
     dynamicTextView.SetText("new value");
 }

如果您有多个 TextView,您可以创建一个类级别的 TextViews 通用列表并将它们添加到列表中并稍后调用它们。

您还可以创建所有 TextView 的地图,以便您也可以使用它们的键调用它们。

于 2013-07-24T08:40:26.027 回答
0

您可以通过多种方式做到这一点,其中一些:

  1. 将您刚刚创建的 id 存储在数组中。然后让你的意见打电话parentView.findViewById(arreyOfIds(0));
  2. 对性能不利,不要这样做 :) - 从您的视图中删除所有刚刚添加的视图,parentView然后再创建一次。

要处理 Activity 中的返回点击,请使用:

@Override
public void onBackPressed()
{
   clearTextView();
} 

所有这一切看起来都很简单:

private List<Integer> ids = new ArrayList<Integer>();

@Override
public void onBackPressed()
{
   clearTextView();
} 

private void clearTextView()
{
   for(Integer id : ids)
   {
     TextView view = (TextView)findViewById(id);
     view.setText("")
   }
}

    private void createTextViews()
    {
                ArrayList<String>Cheif_ComplaintNew =   new ArrayList<String>   ();
                int cc_Arraylist_length=Cheif_ComplaintNew.size();
                android.widget.TextView cc_new  =   new android.widget.TextView(getApplicationContext() );

                for(int i=0; i<cc_Arraylist_length; i++)
                 {
                    ids.add(i)

                    cc_new.setId(i);
                    cc_new.setText(Cheif_ComplaintNew.get(i)); 
                    cc_new.setTextColor(getResources().getColor(R.color.black));
                    cc_new.setTypeface(null,android.graphics.Typeface.ITALIC);
                    cc_new.setTextSize(14);
                    cc_linearNew.addView(cc_new);
                    System.out.println("id"+i); 

                 }
}
于 2013-07-24T08:44:12.387 回答
0

取决于您需要动态添加到布局中的 TextView 数量。

根据提到的代码,没有将 TextViews 添加到布局中:Cheif_ComplaintNew.size()将返回“0”,因此您的循环将不会被执行。

  1. 如果您只需要添加一个 TextView,那么我同意 Daniel 的回答,即拥有一个类级别的 TextView 变量。
  2. 如果它有多个 TextView,并且您知道要使用哪个 ID,那么在您的 Activity 中,您始终可以通过调用来获取该 TextViewfindViewById("ID_OF_THE_TEXTVIEW_NEEDED")
于 2013-07-24T08:47:01.987 回答
0

我认为您可以在将标签添加到cc_new之前将其设置为cc_linearNew,如下所示cc_new.setTag(i):当按钮被点击时,您可以通过cc_linearNew.findViewByTag(i)循环找到那些 TextView,并为它们设置新数据。

于 2013-07-24T08:40:53.613 回答