2013-01-14 60 views
0

我决定为我的应用程序构建一个小部件,但我得到了一些东西!将TextViews动态添加到Widget中

我想根据arrayList的大小在小部件上添加多个文字视图,但在搜索Google后我终于发现这是不可能的。

虽然我尝试了很多解决方法,但似乎没有任何工作!

所以我想问你的帮助!即使使用预定义的XML文件,是否可以这样做,以及如何做到这一点?

所以我实际上寻找的是一段代码,它演示了我上面描述的一段代码!或任何其他帮助,可以让我解决问题!

在此先感谢您的帮助!

/凹凸! 有人吗?

View myView = (View)findViewById(R.id.Something); 

for(element : array) { 

    TextView myTV = new TextView(context); 
    myTV.setText(array.getText()); 
    myView.addView(myTV); 

} 
+0

您可以通过只ArrayList中循环,并创建一个新的TextView每次你这样做的时候。然后将其添加到所需的视图。创建一个TextView只需使用:TextView tv = new TextView(context);然后将其添加到View中,只需在所需的View上调用.addView(tv)。 – AlexanderNajafi

+0

嗯,我试过这个,它不工作!这就是为什么我在我的问题中说,只有预定义的XML TextViews是允许的,但我不知道如何实现这样的事情! – Pavlos

+0

如果您想使用XML代码,请使用Inflater – AlexanderNajafi

回答

-1
TextView[] tx = new TextView[10]; 
    TableRow[] tr = new TableRow[10]; 
    for(i=0; i<10; i++) { 
     tx[i] = new TextView(this); 
     tx[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     tx[i].setText("Data") 
     tr[i] = new TableRow(this); 
     tr[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     tr[i].addView(tx[i]); 
     // and then adding table row in tablelayout 
    } 
+0

正如我在上面的评论所说,这不适用于小工具! – Pavlos

+0

你对ARray尺寸有限制吗? <10,<25?如果是的话,我们可以考虑替代解决方案:)...我相信,它不应该更多... –

+0

理论上它有一个限制,但它是用户定义的,所以它可以有很大的上限! – Pavlos

-1

这样的事情应该工作。

但是,您可以使用一个多行TextView。

+0

不,这不适用于小工具!我正在使用AppWidgetProvider扩展类而不是活动! – Pavlos

+0

而不是findViewByID ..你使用RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.mywidget); – Lieuwe

+0

我知道,但像这样在运行时添加TextViews只是不起作用!它必须是一个xml预定义的,我在那个问题上说过! – Pavlos

0

不,那是不可能的:如果你坚持这样在你的onCreate

0

这是可能的。你要做这样的:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); // your widget layout xml 
for (...){ 
    RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.empty_item); // xml with just a textview 
    view.setTextViewText(R.id.textviewId, "some dynamic text"); // id of the textview and some text 
    views.addView(R.id.layout, view); // id of the layout in widget.xml  
} 
appWidgetManager.updateAppWidget(appWidgetId, views);