2017-04-15 115 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); 
} 
相關問題