Я определяю свое представление следующим образом:
Код: Выделить всё
public class ListView extends LinearLayout {
CustomRecyclerView recyclerView;
SwipeRefreshLayout swipeRefreshLayout;
RecyclerViewAdapter adapter;
Product[] products;
public ListView(Context context) {
super(context);
inflate(context, R.layout.list, this);
recyclerView = findViewById(R.id.listView);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
swipeRefreshLayout = findViewById(R.id.refresh_layout);
adapter = new RecyclerViewAdapter();
recyclerView.setAdapter(adapter);
}
@SuppressLint("NotifyDataSetChanged")
public void setData(@Nullable ReadableArray data) {
post(() -> {
Gson gson = new Gson();
assert data != null;
products = gson.fromJson(data.toString(), Product[].class);
adapter.clearProducts();
adapter.addProducts(Arrays.asList(products));
adapter.notifyDataSetChanged();
});
}
}
Код: Выделить всё
public class ListViewManager extends SimpleViewManager {
private final String REACT_CLASS = "nativeList";
@NonNull
@Override
public String getName() {
return REACT_CLASS;
}
@NonNull
@Override
protected ListView createViewInstance(@NonNull ThemedReactContext reactContext) {
return new ListView(reactContext);
}
@ReactProp(name = "data")
public void setData(ListView view, ReadableArray data) {
view.setData(data);
}
@ReactProp(name = "refreshing")
public void setRefreshing(ListView view, boolean refreshing) {
view.setRefreshing(refreshing);
}
}
Код: Выделить всё
E Unhandled SoftException
com.facebook.react.bridge.ReactNoCrashSoftException: Cannot find EventEmitter for receivedTouches: ReactTag[26] UIManagerType[2] EventName[topTouchMove]
at com.facebook.react.uimanager.events.ReactEventEmitter.receiveTouches(ReactEventEmitter.java:103)
at com.facebook.react.uimanager.events.TouchEvent.dispatchModern(TouchEvent.java:192)
at com.facebook.react.uimanager.events.EventDispatcherImpl$DispatchEventsRunnable.run(EventDispatcherImpl.java:370)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:234)
Реальная проблема заключается в том, что иногда ReactTag[26] соответствует совершенно другому представлению. в ReactNative DOM. React Native запускает совершенно несвязанные обработчики и вызывает странные ошибки в приложении.
Как я могу сделать так, чтобы React Native знал, что находится внутри моего recyclerView ? или хотя бы игнорировать это?
Подробнее здесь: https://stackoverflow.com/questions/783 ... iew-inside