我一直在复制向日葵android架构最佳实践应用程序,到目前为止速度很慢但很成功,虽然我的代码正常工作,但它显示了一条未经检查的消息,所以我运行了它要求的命令,它说:
[unchecked]未选中对作为原始类型ListAdapter成员的submitList(List)的调用,其中T是类型变量:T扩展类ListAdapper中声明的对象
这可能是不重要的,但它是烦人的我,一个我用作参考从来没有任何
我的片段:
public class NewsFeedFragment extends Fragment {
private PinViewModel viewModel;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
FragmentNewsFeedBinding binding = FragmentNewsFeedBinding.inflate(inflater, container, false);
PinViewModelFactory factory = InjectorUtils.providePinListViewModelFactory(getContext());
ListAdapter adapter = new PinListAdapter();
binding.pinList.setAdapter(adapter);
this.viewModel = ViewModelProviders.of(this, factory).get(PinViewModel.class);
subscribeUi(adapter);
return binding.getRoot();
}
private void subscribeUi(ListAdapter adapter) {
this.viewModel.pins.observe(getViewLifecycleOwner(), pins -> {
if (pins != null) {
adapter.submitList(pins);
}
});
}
}
我的视图模型:
public class PinViewModel extends ViewModel {
private PinRepository pinRepository;
public LiveData<List<Pin>> pins;
PinViewModel(@NonNull PinRepository pinRepository) {
this.pinRepository = pinRepository;
this.pins = this.pinRepository.getPins();
}
}
我的适配器:
public class PinListAdapter extends ListAdapter<Pin, PinListAdapter.ViewHolder>{
public PinListAdapter() {
super(new PinDiffCallback());
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(ListItemPinBinding.inflate(
LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Pin pin = getItem(position);
holder.bind(pin);
holder.itemView.setTag(pin);
}
static class ViewHolder extends RecyclerView.ViewHolder {
private ListItemPinBinding binding;
ViewHolder(@NonNull ListItemPinBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
void bind(Pin item) {
binding.setPin(item);
binding.executePendingBindings();
}
}
static class PinDiffCallback extends DiffUtil.ItemCallback<Pin> {
@Override
public boolean areItemsTheSame(@NonNull Pin oldItem, @NonNull Pin newItem) {
return oldItem.getId() == (newItem.getId());
}
@Override
public boolean areContentsTheSame(@NonNull Pin oldItem, @NonNull Pin newItem) {
return oldItem == newItem;
}
}
}
这个例子是用Kotlin而不是Java编写的...
尚不清楚什么列表
if (pins != null && pins instanceof List<Pin>) {
adapter.submitList(pins);
}
你在使用
ListAdapter adapter = new PinListAdapter();
这就是扔掉类型信息PinListAdapter
。具体来说,ListAdapter
您可以将适配器更改为<code>PinListAdapter</code>并获得所需的类型信息。
我正在关注Udacity上的Google Android教程,但在指定的代码中,我收到以下警告: 对“execute”的未检查调用(参数...)”作为原始类型“android.os.AsyncTask”的成员 关于此代码: 做某事任务: 任何人都可以解释这个警告以及如何解决它?它似乎应该按照说明工作...
我正在Netbeans IDE 8.2中制作一个商店,由于这个错误,我无法编译。我试着通过添加JComboBox来修复它,但是它没有解决我的问题。这个应用程序的网页版运行良好,但我无法编译它。当使用Xlint:Unchecked运行时,这是一个警告:[unchecked]作为原始类型JComboBox list.addItem(s)的成员对addItem(E)的未检查调用;其中E是一个类型变量:E
问题内容: 使用泛型时,我发现了一个奇怪的行为。 在此类中,该成员与以下内容无关: 该类在main中使用: 编译错误为“类型不兼容。必需:找到的字符串:对象”。 似乎Java忘记了使用原始类型时的type参数。 我的Java版本是1.7.0_21 问题答案: 简而言之,由于是原始的,它的非静态成员也变为原始的。 JLS§4.8中对此进行了概述: 更准确地说,原始类型定义为以下之一: 通过采用通用类
问题内容: 即使我们有一个整数对象(例如Integer),为什么整数(int)仍具有原始类型?但是对于String类型则不一样。String没有这种原始类型。始终使用String处理对象引用吗? 问题答案: 速度。对于机器代码而言,使用本机CPU指令添加两个int的速度要快得多,而不是必须获取两个Integer对象,从它们中提取int值然后相加的结果,从而创建一个新的结果Integer对象以包含结
我有这样一种方法,将结果强制转换到(列表),但我的eclipse仍然在抱怨!类型安全:未选中从列表到列表的强制转换
我正在学习Spring,我只是在玩豆子范围。 我将附上代码,然后描述我想做的事情。 到目前为止,我已经创建了一个 点类别: 我创建了一个三角形类,其中有3个Point类的实例: 以下是spring.xml: 这是主类: 所以,你会看到三个豆子的豆范围,,和是,但它们是的成员,其范围默认为Spring 因此,我的假设是,这应该不起作用,除非我能以某种方式在我的< code>Triangle类中获取<