小编Lac*_*dge的帖子

不能给ConstraintLayout充气

每次我的应用程序崩溃,因为它无法在类路径中找到Landroidx/constraintlayout/widget/R $ styleable.我试图重建,使缓存无效,但它总是在运行时给我相同的错误.
我尝试了1.1.2和1.1.3两个版本.而且有趣的是:当使用1.1.3时,androidX Jetifier只是强制使用1.1.2,你可以从gradle报告中看到

Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
 Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
    at android.view.LayoutInflater.createView(LayoutInflater.java:651)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:496)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:141)
    at com.github.sharetaxi.LoginActivity.onCreate(LoginActivity.kt:24)
    at android.app.Activity.performCreate(Activity.java:7050)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2809)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2931)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1620)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:6701)
    at …
Run Code Online (Sandbox Code Playgroud)

android android-constraintlayout androidx

9
推荐指数
1
解决办法
4507
查看次数

如何以正确的方式使用RecyclerView.Adapter notifyItemInserted/Removed?

例如,您有一个适配器,并且在onBindViewHolder方法中,您将OnClickListener设置为某些视图(并根据视图位置执行某些操作).您应该分配final方法onBindViewHolder的位置参数,以便可以从onClick()访问它.

更改数据集(删除或添加列表中的项目)后,您调用onItemInserted或onItemRemoved,这实际上是在recyclerview中添加/删除视图,但它不刷新其他视图,因此当您单击邻居视图项时,它将打开一个屏幕或显示索引无效的数据.为了避免这种情况,我基本上调用notifyDatasetChanged来调用onBind到所有可见视图并删除/添加一些视图.

因此,如何刷新其他视图,当你调用notifyItemInserted /删除或如何使用这些methots适当的工作吗?

android android-recyclerview

5
推荐指数
2
解决办法
8536
查看次数

如何使用多个限定符绑定布局

我有2个布局:一个用于v19 +,另一个用于早期版本.它们包含具有不同ID的不同视图.我怎么能说我想要使用两种布局的Android DataBinding框架?它仅为一个布局生成视图(随机选择).

layout/temp_view.xml:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

        <variable
            name="block"
            type="ru.temp.model.content.blocks.WebMediaBlock" />

        <import type="ru.temp.model.Types.ProviderTypes" />

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:background="@android:color/white">

        <ImageView
            android:id="@+id/provider"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingTop="@dimen/size5"
            android:src="@{ProviderTypes.fromString(block.provider).getResId()}" />
    </FrameLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

layout-v19/temp_view.xml:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

        <variable
            name="block"
            type="ru.temp.model.content.blocks.WebMediaBlock" />

        <import type="ru.temp.model.Types.ProviderTypes" />

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:background="@android:color/white">
        <ru.temp.utils.EmbedView
            android:id="@+id/media_embed"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <ru.temp.structure.static_material.CreditsView
            android:id="@+id/credits_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

更新:

最后我发现了问题的根源.我不知道为什么但是在使用minSdkVersion 21时它不会生成*BindingImpl文件.如果指定早期版本它就像@yigit那样工作

data-binding android android-databinding

5
推荐指数
1
解决办法
365
查看次数