2013-01-14 93 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);