2017-04-15 136 views
0

我有一个imageView加载图像,我想打开这个图像的全屏活动。Android数据绑定传递给lambda表达式的onClick参数

<layout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto"> 
<data> 
    <variable 
      name="obj" 
      type="...ViewObjectImage"> 
    </variable> 
    <variable 
      name="handler" 
      type="...Handlers"> 
    </variable> 
</data> 
<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     > 

    <android.support.v7.widget.CardView 
      ... 
     <ImageView 
       ... 
       app:progressbar="@{progressBar}" 
       app:imageUrl="@{obj.url}" 
       android:onClick="@{(v) -> handler.openFullScreen(v, obj.url)}" 
       android:clickable="true" 

我Handler类

public void openFullScreen(View view, String url){ 
    Context context = view.getContext(); 
    Intent intent = new Intent(context, FullScreenSingleImageActivity.class); 
    intent.putExtra("image_url", url); 
    context.startActivity(intent); 
} 

但是,当我点击ImageView的什么也没有发生。我如何以正确的方式传递lambda表达式的第二个参数?

+0

看起来您已经在使用它了。试着更具体地说明你想要达到的目标。为什么它不起作用。如果你的意思是使用方法引用,那根本不可能。但是你的代码看起来对我来说很好。 – tynn

+0

我尝试用全屏图像打开活动,但是当我单击imageview时没有任何反应 – ZolkiBy

+0

然后它可能与'openFullScreen()'的主体有关。你应该把它添加到你的问题中。 – tynn

回答

0

广告图像视图布局广告组布局参数以填充屏幕

+0

imageview中的相对布局,简单的我不写这个参数来减少有问题的代码 – ZolkiBy

-1

我有这样的问题,因为recyclerview包含不同的布局(多视图类型)。所有布局使用数据绑定。我只为活动中的布局设置了处理程序。当我将适配器中的处理程序设置为回收站视图中的所有布局时,问题解决了。

@Override 
public void onBindViewHolder(CommonViewHolder holder, int position) { 
    Object object = getObjForPosition(position); 
    holder.bind(object); 
    holder.binding.setVariable(BR.handler, mHandlers); 
} 
相关问题