Add demo for component how to listen container's event

This commit is contained in:
MikeAfc
2018-08-10 01:23:12 +08:00
parent 29806ae245
commit 9fea226a2f
3 changed files with 67 additions and 2 deletions
@@ -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: ");
}
}
@@ -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);
}
}
}