wearOS ViewHolder中的item有AppLauncherItem数据有LauncherApp数据,如何获取activity名
时间: 2024-03-01 16:50:59 浏览: 94
要获取AppLauncherItem或LauncherApp的activity名,可以通过它们的intent获取。可以使用以下代码获取activity名:
```java
// 对于AppLauncherItem
String activityName = appLauncherItem.getIntent().getComponent().getClassName();
// 对于LauncherApp
String activityName = launcherApp.getIntent().getComponent().getClassName();
```
这里使用`getComponent().getClassName()`方法从Intent中获取组件的类名,即activity名。
相关问题
ViewHolder中的item有AppLauncherItem数据有LauncherApp数据,如何获取activity名
如果您的`ViewHolder`中的`item`既有`AppLauncherItem`数据又有`LauncherApp`数据,并且您想要获取`activity`名称,可以先判断`item`的类型,再分别获取对应的`activity`名称。
以下是示例代码:
```java
public class MyViewHolder extends RecyclerView.ViewHolder {
private TextView appNameTextView;
private ImageView appIconImageView;
public MyViewHolder(View itemView) {
super(itemView);
appNameTextView = itemView.findViewById(R.id.app_name);
appIconImageView = itemView.findViewById(R.id.app_icon);
}
public void bindData(Object item) {
if (item instanceof AppLauncherItem) {
ResolveInfo resolveInfo = (ResolveInfo) ((AppLauncherItem) item).getParcelableExtra(AppLauncherItem.EXTRA_RESOLVE_INFO);
String activityName = resolveInfo.activityInfo.name;
appNameTextView.setText(resolveInfo.loadLabel(itemView.getContext().getPackageManager()));
appIconImageView.setImageDrawable(resolveInfo.loadIcon(itemView.getContext().getPackageManager()));
} else if (item instanceof LauncherApp) {
String activityName = ((LauncherApp) item).getActivityName();
appNameTextView.setText(((LauncherApp) item).getAppName());
appIconImageView.setImageDrawable(((LauncherApp) item).getAppIcon());
}
}
}
```
在上述代码中,我们首先判断`item`的类型,如果是`AppLauncherItem`,则通过`getParcelableExtra()`方法获取到`ResolveInfo`信息,并从中获取`activity`名称;如果是`LauncherApp`,则直接通过`getActivityName()`方法获取到`activity`名称。最后,我们将获取到的`activity`名称设置到对应的`TextView`中。
ViewHolder中的AppLauncherItem获取activity名
如果您想在`RecyclerView`的`ViewHolder`中获取`AppLauncherItem`的`activity`名称,可以使用以下代码:
```java
String activityName = ((ResolveInfo) appLauncherItem.getParcelableExtra(AppLauncherItem.EXTRA_RESOLVE_INFO)).activityInfo.name;
```
其中,`appLauncherItem`是您在`ViewHolder`中获取到的`AppLauncherItem`对象。请注意,此方法要求您的`AppLauncherItem`必须有`ResolveInfo`信息,否则将无法获取到`activity`名称。
阅读全文