我发现很难发现android.databinding.ObservableList
作为数据绑定功能的真正存在理由.
起初它看起来像一个很酷的工具来显示列表,通过数据绑定,将它们添加xml
到一个RecyclerView
.为此,我制作了一个像这样的BindingAdapter:
@BindingAdapter(value = {"items"}, requireAll = false)
public static void setMyAdapterItems(RecyclerView view, ObservableList <T> items) {
if(items != null && (view.getAdapter() instanceof MyAdapter)) {
((GenericAdapter<T>) view.getAdapter()).setItems(items);
}
}
Run Code Online (Sandbox Code Playgroud)
这样一来,我可以使用该属性app:items
的RecyclerView
一个MyAdapter
集来,以更新其项目.
现在最好的功能ObservableList
是你可以添加一个OnListChangedCallback
,它可以处理RecyclerView
添加/移动/删除/更改项目中可用的相同事件,而无需实际重新加载整个列表.
所以我想要实现的逻辑是以下:
MyAdapter
ObservableArrayList
包装它们并将它传递给binding
BindingAdapter
传递的项目MyAdapter
MyAdapter
接收到新的项目,它会清除其旧的并添加OnListChangedCallback
到ObservableList
接收处理微变ObservableList
,MyAdapter
将相应更改而不会完全刷新binding
变量,这样BindingAdapter …
android observablelist android-recyclerview android-databinding android-binding-adapter
在我的 Android 应用程序中,我有两个风味维度:“品牌”(品牌 1、品牌 2)和“环境”(登台、生产)。BuildConfig
一段时间后,我添加了“环境”维度,并且之前为不同品牌定义了一些变量。更具体地说,我BASE_URL
这样定义:
flavorDimensions 'brand'
productFlavors {
brand1 {
dimension 'brand'
...
buildConfigField "String", "BASE_URL", "\"http://brand.one.api/\""
...
}
brand2 {
dimension 'brand'
...
buildConfigField "String", "BASE_URL", "\"http://brand.two.api/\""
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我添加了“环境”维度,我想要设置的是四个不同的端点:
但我不知道如何BuildConfig
为风味维度的特定组合创建变量。这甚至可以用裸 gradle 实现吗?
谢谢
gradle android-build-flavors android-flavordimension android-buildconfig
我正在制作一个Android应用程序,它将一些下载的pdf文件存储在设备的SD卡中.一切正常,但现在我想添加一个功能,只需弹出默认的android文件/文件夹浏览器,显示我的应用程序存储所有PDF(包含子目录)的目录,以便用户可以看到他的文档存储位置和可以轻松浏览它们.
我经历了很多其他SO问题和论坛帖子,但似乎这只能用于音乐/图像/联系人等.基本上那些具有"专用浏览系统"但不具有一般文件浏览功能的文件类型.
我实际上是在使用这段代码:
File file = new File("/sdcard/MySorgenia/Documenti/");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
Uri data = Uri.fromFile(file);
String type = "*/*";
intent.setDataAndType(data, type);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但这将显示一个"选择应用程序以完成您的操作"对话框,其中包含许多应用程序,如"音乐""图库"等,但没有通用目的.
谢谢!