AppWidget中的ListView不显示来自Firebase的数据
创始人
2024-09-11 15:01:29
0

要在 AppWidget 中显示来自 Firebase 的数据,需要遵循以下步骤:

  1. 在 AppWidgetProvider 中创建 RemoteViews 对象
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); 
  1. 创建一个服务(Service)类,并在其中使用 Firebase 实例查询数据:
class MyWidgetService extends RemoteViewsService { 

@Override 
public RemoteViewsFactory onGetViewFactory(Intent intent) { 
return new MyRemoteViewsFactory(getApplicationContext(), intent); 
} 

private class MyRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory { 

FirebaseDatabase firebaseDatabase; 
DatabaseReference databaseReference; 
List list = new ArrayList<>(); 
Context context; 

MyRemoteViewsFactory(Context context, Intent intent) { 
this.context = context; 
firebaseDatabase = FirebaseDatabase.getInstance(); 
databaseReference = firebaseDatabase.getReference("YOUR_REFERENCE_PATH"); 
} 

@Override 
public void onCreate() {} 

@Override 
public void onDataSetChanged() { 
list.clear(); 
databaseReference.addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(@NonNull DataSnapshot dataSnapshot) { 
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
String item = postSnapshot.getValue(String.class); 
list.add(item); 
} 
} 

@Override 
public void onCancelled(@NonNull DatabaseError databaseError) { 
} 
}); 
} 

@Override 
public void onDestroy() {} 

@Override 
public int getCount() { 
return list.size(); 
} 

@Override 
public RemoteViews getViewAt(int position) { 
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.list_item); 
views.setTextViewText(R.id.list_item_text, list.get(position)); 
return views; 
} 

@Override 
public RemoteViews getLoadingView() { 
return null; 
} 

@Override 
public int getViewTypeCount() { 
return 1; 
} 

@Override 
public long getItemId(int position) { 
return position; 
} 

@Override 
public boolean hasStableIds() { 
return true; 
} 
} 
} 
  1. 在 AppWidgetProvider 中的 onUpdate 方法中,将 ListView 绑定到 MyWidgetService:
Intent intent = new Intent(context, MyWidgetService.class); 
views.setRemoteAdapter(R.id.widget_list_view, intent); 
  1. 更新 WidgetManager,以在屏幕上显示 AppWidget:
ComponentName componentName = new ComponentName(context, YourAppWidgetProvider.class);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(componentName, views);

尝试以上步骤后,您应该能够在

相关内容

热门资讯

技巧知识分享!微乐辅助脚本,来... 技巧知识分享!微乐辅助脚本,来来云南辅助,详细挂(竟然有挂)1、实时微乐辅助脚本透视辅助更新:用户可...
分享个大家!同乡游辅助软件,雀... 分享个大家!同乡游辅助软件,雀神广东麻将必赢方法,详细软件(有挂方法)在进入雀神广东麻将必赢方法软件...
避坑细节!九九联盟解码器,福建... 避坑细节!九九联盟解码器,福建天天开心一直输怎么办,详细插件(有挂教程)1、游戏颠覆性的策略玩法,独...
热点讨论!wepoker内置辅... 热点讨论!wepoker内置辅助器,边锋老友威海荣成辅助,详细工具(有挂总结)1、游戏颠覆性的策略玩...
我来教大家!青橙竞技辅助器,丰... 我来教大家!青橙竞技辅助器,丰城双剑辅助,详细神器(有挂解密)1、青橙竞技辅助器有没有辅助教程、青橙...
记者发布!蜀山四川辅助脚本,来... 记者发布!蜀山四川辅助脚本,来物局潮汕辅助,详细技巧(有挂实锤)1、记者发布!蜀山四川辅助脚本,来物...
技术分享!途游辅助器软件,好友... 技术分享!途游辅助器软件,好友赣南新版本脚本,详细挂(有挂方法)1)好友赣南新版本脚本免费钻石:进一...
每日必看!闽游app破解,内蒙... 每日必看!闽游app破解,内蒙麻将外卦神器下载,详细app(讲解有挂)在进入内蒙麻将外卦神器下载软件...
2分钟细说!微信牵手跑辅助下载... 2分钟细说!微信牵手跑辅助下载,哥哥打大a脚本,详细软件(有挂辅助)1、下载好微信牵手跑辅助下载正确...
科普攻略!哈局八张模拟器,拱趴... 科普攻略!哈局八张模拟器,拱趴大菠萝有辅助吗,详细app(有挂秘诀)1、科普攻略!哈局八张模拟器,拱...