diff --git a/examples/src/main/java/com/tmall/wireless/tangram/example/TangramActivity.java b/examples/src/main/java/com/tmall/wireless/tangram/example/TangramActivity.java index c7f037b..db063b0 100644 --- a/examples/src/main/java/com/tmall/wireless/tangram/example/TangramActivity.java +++ b/examples/src/main/java/com/tmall/wireless/tangram/example/TangramActivity.java @@ -65,6 +65,7 @@ import com.tmall.wireless.tangram.example.data.TestViewHolder; import com.tmall.wireless.tangram.example.data.TestViewHolderCell; import com.tmall.wireless.tangram.example.data.VVTEST; import com.tmall.wireless.tangram.example.support.SampleClickSupport; +import com.tmall.wireless.tangram.example.support.SampleScrollSupport; import com.tmall.wireless.tangram.structure.BaseCell; import com.tmall.wireless.tangram.structure.viewcreator.ViewHolderCreator; import com.tmall.wireless.tangram.support.async.AsyncLoader; @@ -304,6 +305,9 @@ public class TangramActivity extends Activity { } catch (JSONException e) { e.printStackTrace(); } + + //Demo for component to listen container's event + engine.register(SampleScrollSupport.class, new SampleScrollSupport(recyclerView)); } @Override diff --git a/examples/src/main/java/com/tmall/wireless/tangram/example/data/TestView.java b/examples/src/main/java/com/tmall/wireless/tangram/example/data/TestView.java index d9c1a66..ce0c6c0 100644 --- a/examples/src/main/java/com/tmall/wireless/tangram/example/data/TestView.java +++ b/examples/src/main/java/com/tmall/wireless/tangram/example/data/TestView.java @@ -25,11 +25,14 @@ package com.tmall.wireless.tangram.example.data; import android.content.Context; +import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; +import android.util.Log; import android.widget.FrameLayout; import android.widget.TextView; import com.tmall.wireless.tangram.example.R; +import com.tmall.wireless.tangram.example.support.SampleScrollSupport; import com.tmall.wireless.tangram.structure.BaseCell; import com.tmall.wireless.tangram.structure.CellRender; import com.tmall.wireless.tangram.structure.view.ITangramViewLifeCycle; @@ -37,7 +40,7 @@ import com.tmall.wireless.tangram.structure.view.ITangramViewLifeCycle; /** * Created by villadora on 15/8/24. */ -public class TestView extends FrameLayout implements ITangramViewLifeCycle { +public class TestView extends FrameLayout implements ITangramViewLifeCycle, SampleScrollSupport.IScrollListener { private TextView textView; private BaseCell cell; @@ -56,7 +59,7 @@ public class TestView extends FrameLayout implements ITangramViewLifeCycle { init(); } - private void init(){ + private void init() { inflate(getContext(), R.layout.item, this); textView = (TextView) findViewById(R.id.title); } @@ -65,6 +68,10 @@ public class TestView extends FrameLayout implements ITangramViewLifeCycle { public void cellInited(BaseCell cell) { setOnClickListener(cell); this.cell = cell; + if (cell.serviceManager != null) { + SampleScrollSupport scrollSupport = cell.serviceManager.getService(SampleScrollSupport.class); + scrollSupport.register(this); + } } @Override @@ -90,4 +97,14 @@ public class TestView extends FrameLayout implements ITangramViewLifeCycle { @Override public void postUnBindView(BaseCell cell) { } + + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + Log.i("TestView", "onScrollStateChanged: "); + } + + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + Log.i("TestView", "onScrolled: "); + } } diff --git a/examples/src/main/java/com/tmall/wireless/tangram/example/support/SampleScrollSupport.java b/examples/src/main/java/com/tmall/wireless/tangram/example/support/SampleScrollSupport.java new file mode 100644 index 0000000..3d8508e --- /dev/null +++ b/examples/src/main/java/com/tmall/wireless/tangram/example/support/SampleScrollSupport.java @@ -0,0 +1,44 @@ +package com.tmall.wireless.tangram.example.support; + +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.RecyclerView.OnScrollListener; + +import java.util.ArrayList; +import java.util.List; + +public class SampleScrollSupport { + public interface IScrollListener { + public void onScrollStateChanged(RecyclerView recyclerView, int newState); + + public void onScrolled(RecyclerView recyclerView, int dx, int dy); + } + + private RecyclerView recyclerView; + + private List scrollListeners = new ArrayList<>(); + + public SampleScrollSupport(RecyclerView recyclerView) { + this.recyclerView = recyclerView; + recyclerView.addOnScrollListener(new OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + for (IScrollListener listener : scrollListeners) { + listener.onScrollStateChanged(recyclerView, newState); + } + } + + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + for (IScrollListener listener : scrollListeners) { + listener.onScrolled(recyclerView, dx, dy); + } + } + }); + } + + public void register(IScrollListener scrollListener) { + if (!scrollListeners.contains(scrollListener)) { + scrollListeners.add(scrollListener); + } + } +}