如何清除和添加新文本到动态创建的TextView?

时间:2013-07-24 08:33:46

标签: android android-layout textview

我在循环中动态添加了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 个答案:

答案 0 :(得分:1)

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

 TextView dynamicTextView;

 ...

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你可以通过多种方式实现这一目标,其中一些方式:

  1. 将刚刚创建的ID存储在数组中。然后只需调用您的观看parentView.findViewById(arreyOfIds(0));
  2. 性能不佳不要这样做:) - 从parentView中移除所有刚添加的视图,然后再次创建它们。
  3. 要处理活动使用中的后退点击:

    @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); 
    
                     }
    }
    

答案 3 :(得分:0)

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

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

  1. 如果你只需要添加一个TextView,那么我同意Daniel的答案,即拥有一个类级别的TextView变量。
  2. 如果它有多个TextView,并且您知道在Activity中使用哪个ID,则可以通过调用findViewById("ID_OF_THE_TEXTVIEW_NEEDED")
  3. 始终获取该TextView