2013-07-08 318 views
1

我有一個AppWidget的列表視圖。我希望在用戶將listview添加到主屏幕或刷新小部件後,讓listview從特定位置開始。我試圖使用setScrollPostion,但它不起作用。如何在Android AppWidget中設置ListView的初始滾動位置?

e.g:

RemoteViews視圖=新RemoteViews(context.getPackageName(),R.layout.my_widget);

......

views.setScrollPosition(R.id.listview_in_widget,1000); appWidgetManager.updateAppWidget(appWidgetId,views);

小部件仍顯示第一項。

我會很感激,如果有人可以給我一些提示如何做到這一點?

回答

1

所以,你應該叫setScrollPosition方法是這樣的:

views.post(new Runnable() { 

    @Override 
    public void run() { 
     views.setScrollPosition(R.id.listview_in_widget, 1000);  
    } 
}); 

views.postDelayed方法。

+0

我很抱歉,在遠景中沒有scrollto或setselection。其實,我試圖在appwidget中實現一個循環列表視圖。我可以在普通列表視圖中執行此操作,因爲我可以在普通列表視圖中執行setselection。我正試圖在主屏幕上實現日曆appwidget,以便用戶可以上下滾動。但我有問題設置遠程列表視圖的初始位置。 – David

+0

抱歉我起初誤解了你的問題,所以我編輯了我的答案,希望它對你有所幫助。 – koso

+0

有沒有辦法在appwidget/remoteview中獲取滾動位置? –

0

是的,這是可能的Widget ListView。我花了幾個星期的間歇性嘗試和測試,但這是我所學到的。

1)Widget利用RemoteViews,結果只能使用普通視圖(本例中爲ListView)的功能子集。轉到ListView source並搜索@ android.view.RemotableViewMethod。這些註釋決定了一個小部件最終可以使用的內容。

2)檢查RemoteViews source並注意776行isAnnotationPresent檢查。您經常會看到LogCat中記錄的錯誤,該錯誤在您進行方法調用時沒有用RemotableViewMethod進行註釋。

3)您需要確保在調用RemoteViews實例的方法後,調用updateAppWidget。這裏是一個例子:

//update list item pos 
RemoteViews remoteViews = new RemoteViews(_context.getPackageName(), R.layout.widget); 
remoteViews.setScrollPosition(R.id.widget_nodes_list, newPos); 

//apply pos 
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(_context); 
appWidgetManager.updateAppWidget(_appWidgetId, remoteViews); 
相關問題