mirror of
https://github.com/alibaba/Tangram-Android.git
synced 2026-10-17 05:07:05 +08:00
Add demo for component how to listen container's event
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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: ");
|
||||
}
|
||||
}
|
||||
|
||||
+44
@@ -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<IScrollListener> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user