위젯에서이 listview
응용 프로그램 아이콘을 원했기 때문에 remoteview
의 도움으로 위젯에 동적 인 listview
을 만들려고합니다. 애플리케이션별로 분리 된 모든 앱에서 들어오는 알림을 표시하고 싶습니다. 서 알림 목록을 만들고 싶습니다. 사용자가 listview에서 애플리케이션 아이콘을 클릭하면 해당 알림이 표시됩니다. 나는 모든 알림을 받기 위해 API 19
을 사용하고 있지만 성공했으나 Remoteview
과 drawables(Icons)
을 사용하여 위젯에서 Listview
을 어떻게 만들 수 있는지 알지 못합니다.remoteview를 사용하여 Listview를 만드는 방법은 무엇입니까?
답변
위젯에 ListView가있는 다른 예제를 검색하거나 사용해 보았습니까? github에서 사용할 수있는 Weather Widget demo을 확인하십시오.
코드 :
public class MyWidgetProvider extends AppWidgetProvider {
private static HandlerThread sWorkerThread;
private static Handler sWorkerQueue;
public MyWidgetProvider() {
// Start the worker thread
sWorkerThread = new HandlerThread("MyWidgetProvider-worker");
sWorkerThread.start();
sWorkerQueue = new Handler(sWorkerThread.getLooper());
}
public void onUpdate(Context context, final AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; ++i) {
...
final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setRemoteAdapter(R.id.lvWidget, svcIntent);
sWorkerQueue.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
views.setScrollPosition(R.id.list, 3);
appWidgetManager.partiallyUpdateAppWidget(appWidgetIds[i], views);
}
}, 1000);
appWidgetManager.updateAppWidget(appWidgetIds[i], views);
...
}
}
}
아래와 같이 동작합니다 :
GitHub의 프로젝트와 샘플 코드 위를 확인하시기 바랍니다.
@ kiturk3 알려주세요 이 답변으로 귀하의 질문이 해결되지 않았거나 올바른 것으로 받아 들여 다른 사람도 그 사실을 알게되고 구현에 올바른 방향을 제시 할 수 있다면. 감사. –
사실 나는 삼성 갤럭시 노트 가장자리 패널을 위해 이것을하고 싶었다. 나는 이미 다른 질문에서 너의 똑같은 질문을 읽었지 만 그것은 정확히 작동하지 않았다. 나는 여분의 것을 비틀 필요가 있었다. 그러나 그것은 도움이 확실했다. 고마워요 :) – kiturk3
님께 서 cade 님의 답변으로 답변했습니다. listview가 주어졌으며 정확히 70 % 나 필요했습니다. 오직 onclickpendingintent 이벤트를 구현해야합니다. – kiturk3
나는 이전의 대답 중 하나에서 @iDroid Explorer의 솔루션을 사용해 보았습니다. 그러나 listview가 가장자리 패널에 나타나지 않았습니다 (PS : 나는 은하의 노트 가장자리 패널에 구현하고 싶었습니다).
private RemoteViews updateWidgetListView(Context arg0, int i) {
//which layout to show on widget
RemoteViews remoteViews = new RemoteViews(arg0.getPackageName(),
R.layout.activity_main_sub);
//RemoteViews Service needed to provide adapter for ListView
Log.d("fff", "updateWidget: "+ i);
Intent svcIntent = new Intent(arg0, MyService.class);
//passing app widget id to that RemoteViews Service
svcIntent.putExtra("Id", i);
Log.d("fff", "receiver:"+appnM);
svcIntent.putExtra("appname", appnM);
//setting a unique Uri to the intent
//don't know its purpose to me right now
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
//setting adapter to listview of the widget
remoteViews.setRemoteAdapter(i, R.id.list_icon,svcIntent);
// remoteViews.setRemoteAdapter(i, svcIntent);
arg0.startService(svcIntent);
//setting an empty view in case of no data
remoteViews.setEmptyView(R.id.list_icon, R.id.empty_view);
Log.d("fff","end of myReceiver");
return remoteViews;
}
을 그리고는 myService 클래스에서 나는 목록에서 필요한 항목을 채운 :
그래서 내가 코드를 아래에 노력했다.
나는 무작위 검색에서 발견 된 WidgetListView1이라는 예제를 통해 도움을 얻었습니다.
아직 코드를 작성 했습니까? – Apurva
모두 ?? 많은 코드와 자바 파일을 시도했습니다 ... – kiturk3
다른 유용한 답변이 있습니다 : http://www.stackoverflow.com/a/6093753/2180161 -이 하나를 이해하는 것이 더 쉬웠습니다 – maysi