我如何从数组列表中动态地添加文本视图?

How can I add textview dynamically from arraylist?


问题

是否可以在相对布局中动态添加textView,从数组列表中获取信息?我解释一下。例如,我有一个数组,里面有五个词,我从数据库中得到的。然后我将在其布局中创建5个不同的textView。 我不能使用listview,因为这些TextView的位置是由用户来选择的。

这是我的工作代码,所以我能够创建更多的TextView,但不是从数组列表中。我还需要为每个TextView的上边距提供不同的值。

RelativeLayout rl = (RelativeLayout) findViewById(R.id.sundayRelativeLayout);
    TextView iv;
    RelativeLayout.LayoutParams params;

    

    float d = this.getResources().getDisplayMetrics().density;

    iv = new TextView(this);
    iv.setBackgroundColor(Color.YELLOW);
    int marginTopDip = 180; // margin in dips
    int marginHeightDips = 60; // margin in dips

    int height = (int)(marginHeightDips * d);
    int margintop = (int)(marginTopDip * d);
    params = new RelativeLayout.LayoutParams(500, height);
    params.topMargin = margintop;
    rl.addView(iv, params);



    iv = new TextView(this);
    iv.setBackgroundColor(Color.RED);
    params = new RelativeLayout.LayoutParams(30, 40);
    params.topMargin = 900;
    rl.addView(iv, params);
你可以用程序创建TextView,并使用 LayoutParams
定位它们。
答案1

像这样创建

ArrayList<Integer> list=new ArrayList<Integer>();

如果你的列表大小为5

for(int i=0;i<list.size();i++){
TextView tv=new TextView(this);
tv.setText(""+list.get(i));
}
谢谢!这很有效!但我怎样才能让我的TextView在不同的边距上相互连接?
LayoutParams params = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ); params.setMargins(left, top, right, bottom); yourTextView.setLayoutParams( params);
这是正确的,但是在这种情况下,我还需要从一个数组列表中接收信息,这样它们就会与texview相关联。
for(int i=0;i
答案2
final int N = 10; // total number of textviews to add

final TextView[] myTextViews = new TextView[N]; // create an empty array;

for (int i = 0; i < N; i++) {
    // create a new textview
    final TextView rowTextView = new TextView(this);

    // set some properties of rowTextView or something
    rowTextView.setText("This is row #" + i);

    // add the textview to the linearlayout
    myLinearLayout.addView(rowTextView);

    // save a reference to the textview for later
    myTextViews[i] = rowTextView;
}
答案3

是的,你可以像这样在相对布局中添加文本视图。

RelativeLayout container = (RelativeLayout) findViewById(R.id.container);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);

    ArrayList<Integer> list=new ArrayList<Integer>();

    for(int i=0;i<list.size();i++){
       TextView textView = new TextView(this);
       textView1.setText("A"+i);
       textView1.setId(i);
       container.addView(textView);
       params.addRule(RelativeLayout.BELOW,i);      
    }