小编Onh*_*ron的帖子

Android数据绑定ObservableList行为问题

我发现很难发现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:itemsRecyclerView一个MyAdapter集来,以更新其项目.

现在最好的功能ObservableList是你可以添加一个OnListChangedCallback,它可以处理RecyclerView添加/移动/删除/更改项目中可用的相同事件,而无需实际重新加载整个列表.

所以我想要实现的逻辑是以下:

  1. 我开始是空的 MyAdapter
  2. 当我的API从我的API中获取时,我实例化一个ObservableArrayList包装它们并将它传递给binding
  3. 数据绑定调用我BindingAdapter传递的项目MyAdapter
  4. MyAdapter接收到新的项目,它会清除其旧的并添加OnListChangedCallbackObservableList接收处理微变
  5. 如果有任何变化ObservableList,MyAdapter将相应更改而不会完全刷新
  6. 如果我想显示一组完全不同的相同项类型,我可以重新设置binding变量,这样BindingAdapter …

android observablelist android-recyclerview android-databinding android-binding-adapter

26
推荐指数
1
解决办法
3006
查看次数

gradle 风味维度中的组合 BuildConfig 变量

在我的 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)

现在,我添加了“环境”维度,我想要设置的是四个不同的端点:

  1. Brand1-staging:“ http://brand.one.staging.api/
  2. Brand1-生产:“ http://brand.one.production.api/
  3. Brand2-staging:“ http://brand.two.staging.api/
  4. Brand2-生产:“ http://brand.two.Production.api/

但我不知道如何BuildConfig为风味维度的特定组合创建变量。这甚至可以用裸 gradle 实现吗?

谢谢

gradle android-build-flavors android-flavordimension android-buildconfig

7
推荐指数
1
解决办法
1989
查看次数

从我的Android活动中打开文件选择器

我正在制作一个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)

但这将显示一个"选择应用程序以完成您的操作"对话框,其中包含许多应用程序,如"音乐""图库"等,但没有通用目的.

谢谢!

android actionview sd-card android-intent

3
推荐指数
2
解决办法
2万
查看次数