目前,我正在使用data binding两种情况:
views以片段方式访问view model。当我与 进行比较时view binding,我发现两种方法都很好(view binding更好地访问views、data binding绑定数据),那么MVVM 应该首选哪种模式?
我应该只移动view binding并处理ViewModel-layout片段中的连接吗?
architecture android mvvm android-databinding android-viewbinding
在最新的 Gradle 插件中,当我尝试访问适配器位置字段 IDE 时,显示为已弃用。建议使用getBindingAdapterPosition()而不是adapterPosition
但是当我尝试访问该字段getBindingAdapterPosition()IDE 时抛出错误:
Could not find accessor com.rizek.android.users.adapters.recyclerview.cart.ProductListAdapter.ExpandViewHolder.bindingAdapterPosition
Run Code Online (Sandbox Code Playgroud)
我的 XML 文件:
<ImageView
android:id="@+id/imageView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:onClick="@{()->frequencyOptionInteractor.onRecurringOptionChanged(recurringViewHolder.adapterPosition,frequencyOption)}"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="@+id/linearLayout12"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/linearLayout12"
app:srcCompat="@drawable/frequency_option_selector"
bind:stateActivated="@{frequencyOptionAdapter.selectedPosition==recurringViewHolder.bindingAdapterPosition}" />
Run Code Online (Sandbox Code Playgroud) 我正在尝试按以下说明创建自定义设置器:https : //developer.android.com/tools/data-binding/guide.html#custom_setters
我的看法是:
<data>
<variable name="viewModel"
type="com.example.feed.DummyViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:imageUrl="@{viewModel.imageUrl}" />
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
绑定是:
package com.example.feed;
import android.databinding.BaseObservable;
import android.databinding.BindingAdapter;
import android.widget.ImageView;
public class DummyViewModel extends BaseObservable {
@BindingAdapter("bind:imageUrl")
public static void loadImage(ImageView view, String url) {
// nothing yet
}
}
Run Code Online (Sandbox Code Playgroud)
文楼我得到错误:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor com.example.feed.DummyViewModel.imageUrl file:/Users/tse/t/app/src/main/res/layout/fragment_main.xml loc:20:28 - 20:45 ****\ data binding error …Run Code Online (Sandbox Code Playgroud) 我试图得到drawables取决于函数是假还是真.但我做错了什么.所以任何帮助都表示赞赏
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:onClick="@{() -> handler.onVoteClicked(gameFeed.uid)}"
android:src="@{() -> handler.existInList(feed.ratings,feed.uid) ? @drawable/ic_star_border : @drawable/ic_star}"
android:layout_gravity="center_vertical"/>
Run Code Online (Sandbox Code Playgroud)
这是我试图从我的处理程序调用的函数.
public boolean existInList(Map<String,Boolean> ratings, String userId) {
for (Map.Entry<String, Boolean> entry : ratings.entrySet()) {
if(entry.getValue().equals(userId)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
添加了我得到的错误
Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Cannot find the proper callback class
for android:src. Tried android.graphics.drawable.Drawable but it has 4 abstract methods, should have 1 abstract methods. file:/Users/brahim/ProjectNinjo/app/src/main/res/layout/adapter_feed_row.xml loc:108:33 - 108:135 …Run Code Online (Sandbox Code Playgroud) 我想运行可见的进度条,直到图像加载到imageview中。我想通过绑定适配器实现它。我有一个具有imageUrl的bindingadpter的CustomBinder类。这是我的自定义活页夹
public class CustomBinders {
static ImageLoader imageLoader;
public static DisplayImageOptions options;
private static final String TAG = "CustomBinders";
@BindingAdapter({"imageUrl"})
public static void loadImage(ImageView view, String imageUrl){
imageLoader= ImageLoader.getInstance();
options = StaticMethods.setUIL();
Log.d(TAG, "loadImage: ");
imageLoader.displayImage(imageUrl, view, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason.getType()) {
case IO_ERROR:
message = "Input/Output error";
break;
case DECODING_ERROR:
message = "Image can't …Run Code Online (Sandbox Code Playgroud) data-binding android android-recyclerview android-databinding
我在使用带有BaseAdapter的Android DataBinding为Spinner实现CustomAdapter时遇到问题.
数据有两个值.我想使用两个TextView.CustomAdapter必须从BaseAdapter继承,ArrayAdapter的简单变体仅支持一个TextView.从长远来看,第二个TextView可能是一个ImageView,因此将两个值合并为一个String以便能够使用ArrayAdapter仍然无济于事.
我也尝试过:为了确保这个想法和Spinner正常工作,我实现了一个没有DataBinding的版本我在chrislizh项目的https://github.com/chrislizh/SpinnerTwoWayDataBindingDemo上实现了我的数据绑定实现,它正在使用ArrayAdapter.我也尝试调用:binding.executePendingBindings(),并试图不使用ViewHolder模式.
问题导致细节:该项目是关于行星.旋转器允许选择行星.每个行星都有一个名字和一个距离.将显示这两个值.我实现CustomAdapter的结果,名为PlanetAdapter,DataBinding在选择后显示第一个项目两次.查看截图.选择除第一个项目之外的任何其他行星,使用选择"切换"其位置,并继续显示两次.这样,显示的列表中始终缺少一个行星.
PlanetAdapter的代码以及在MainActivty的onCreate方法中创建它的调用:
PlanetAdapter
public class PlanetAdapter extends BaseAdapter
{
private int itemLayoutResourceId;
private final List<Planet> planets;
private LayoutInflater inflater;
public PlanetAdapter(@NonNull Context context, @LayoutRes int itemLayoutResourceId, List<Planet> planets)
{
inflater = LayoutInflater.from(context);
this.itemLayoutResourceId = itemLayoutResourceId;
this.planets = planets;
}
@Override
public int getCount()
{
return planets.size();
}
@Override
public Object getItem(int position)
{
return planets.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, …Run Code Online (Sandbox Code Playgroud) 我试图在我现有的项目中使用DataBinding.根据文档,我在app模块的build.gradle中添加了以下行,并编译了项目.
dataBinding {
enabled = true
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Could not resolve all dependencies for configuration ':app:devDebugCompileClasspath'.
Run Code Online (Sandbox Code Playgroud)
找不到com.android.databinding:baseLibrary:3.0.0-alpha3.在以下位置搜索:file:/ C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3. pom文件:/ C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar文件:/ C :/Users/incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom文件:/ C:/ Users /incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar文件:/ C:/ Users/incnayak/AppData/Local/Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom文件:/ C:/ Users/incnayak/AppData/Local /Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://jcenter.bintray.com/com/android/datab inding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jcenter.bintray.com/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3 .jar https://jitpack.io/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jitpack.io/com/android/databinding/baseLibrary/3.0 .0-alpha3/baseLibrary-3.0.0-alpha3.jar https://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https ://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 必需:project:app找不到com.android.databinding:baseLibrary :3.0.0-素α3.在以下位置搜索:file:/ C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3. pom文件:/ C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar文件:/ C :/Users/incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom文件:/ C:/ Users /incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar文件:/ C:/ Users/incnayak/AppData/Local/Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom文件:/ C:/ Users/incnayak/AppData/Local /Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://jcenter.bintray.com/com/android/datab inding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jcenter.bintray.com/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3 .jar https://jitpack.io/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jitpack.io/com/android/databinding/baseLibrary/3.0 .0-alpha3/baseLibrary-3.0.0-alpha3.jar https://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https ://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 必需条件:project:app> com.android.databinding:library:1.3 .1项目:app> com.android.databinding:adapter:1.3.1
任何人都可以帮我解决这个问题吗?我正在使用Android Studio 3.0 Canary 3.
我的项目级别是gradle
buildscript {
repositories {
jcenter() …Run Code Online (Sandbox Code Playgroud) 我在Digital Ocean服务器上安装了Jenkins(3 GB内存/ 20 GB磁盘/ Ubuntu 16.04.3 x64)
我在/ opt / android-sdk中安装了Android SDK,并修复了让Jenkins用户具有RW访问权限的权限。
该项目在我的本地计算机上编译,但是由于某种原因在远程服务器上失败。我知道设置很好,因为我创建了一个虚拟的android项目,并且可以在该服务器上正常编译,但是我的实际项目却不行。
有关我的例外情况的摘要以及许多详细信息,请参见:https : //scans.gradle.com/s/owahozyrl4qwg
例外
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: java.lang.IllegalArgumentException: java.lang.IllegalArgumentException
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) …Run Code Online (Sandbox Code Playgroud) Android Studio 3.2 Canary11
Gradle Tool 3.2.0-alpha11
kapt的com.android.databinding与3.2.0-alpha11不兼容,无法构建/运行apk.
同时,它的最大工作量为3.2.0-alpha10
```任务执行失败':app:kaptGenerateStubsDevDebugKotlin'.
无法解析配置':app:kapt'的所有文件.找不到com.android.databinding:编译器:3.2.0-alpha11.在以下位置搜索:file:/Users/xxxx/Library/Android/sdk/extras/m2repository/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom文件:/ Users /xxx/Library/Android/sdk/extras/m2repository/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar文件:/ Users/xxx/Library/Android/sdk/extras /google/m2repository/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom文件:/ Users/xxx/Library/Android/sdk/extras/google/m2repository/com/android /databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar文件:/Users/xxx/Library/Android/sdk/extras/android/m2repository/com/android/databinding/compiler/3.2.0 -alpha11/compiler-3.2.0-alpha11.pom文件:/Users/xxx/Library/Android/sdk/extras/android/m2repository/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0 -alpha11.jar https://jcenter.bintray.com/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://jcenter.bintray.com/com/android/databindin g/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2 .0-alpha11.pom https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://dl.google .com/dl/android/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://dl.google.com/dl/android/maven2/com/ android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://jcenter.bintray.com/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0 -alpha11.pom https://jcenter.bintray.com/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://repo.maven.apache.org/maven2 /com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0- alpha11/compiler-3.2.0-alpha11.jar https://dl.google.com/dl/android/maven2/com/android/databinding/compiler /3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://dl.google.com/dl/android/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2. 0-alpha11.jar https://jcenter.bintray.com/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://jcenter.bintray.com/com/ android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler -3.2.0-alpha11.pom https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https:// dl .google.com/dl/android/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://dl.google.com/dl/android/maven2/ com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://jcenter.bintray.com/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2 .0-alpha11.pom https://jcenter.bintray.com/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://maven.fabric.io/public/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.pom https://maven.fabric.io/ public/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0 -alpha11/compiler-3.2.0-alpha11.pom https://repo.maven.apache.org/maven2/com/android/databinding/compiler/3.2.0-alpha11/compiler-3.2.0-alpha11.jar 必填通过:project:app```
android android-studio android-gradle-plugin gradle-plugin android-databinding
我有这个BindingAdapter要Glide在我的图书馆模块中使用加载图像
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.bumptech.glide.Glide
@BindingAdapter("imageUrl")
fun loadImage(view: ImageView, imageUrl: String) {
Glide.with(view)
.load(imageUrl)
.into(view)
}
Run Code Online (Sandbox Code Playgroud)
我试图像这样使用适配器
<ImageView
...
app:imageUrl="@{`http://pngimg.com/uploads/alfa_romeo/alfa_romeo_PNG75.png`}"
... />
Run Code Online (Sandbox Code Playgroud)
但是越来越
**** /数据绑定错误**** msg:在android.widget.ImageView上找不到参数类型为java.lang.String的属性“ app:imageUrl”的设置器。
奇怪的是,当我将from 转换BindingAdapter为Javafrom时Kotlin,它起作用了。
public class ImageViewBindingAdapter {
@BindingAdapter("imageUrl")
public static void setImageUrl(ImageView view, String url) {
Glide.with(view)
.load(url)
.into(view);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:此问题仅在library模块中存在。App模块与Kotlin文件完美配合。
我究竟做错了什么 ?
android ×10
data-binding ×2
kotlin ×2
architecture ×1
build.gradle ×1
gradle ×1
jenkins ×1
mvvm ×1