передать массив пользовательских объектов, чтобы реагировать на родную сторону от Android - PullRequest
0 голосов
/ 24 января 2019

У меня есть список пользовательских объектов (Список). Мне нужно отправить эти данные в React Native для отображения в виде плоского списка. Как мне это сделать? Этот список присутствует в

класс NativeToReact (reactContext: ReactApplicationContext, userManager: IUserManager): ReactContextBaseJavaModule (reactContext) `

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Поскольку вы хотели бы отправить ArrayList, вам нужно было бы отправить WritableArray с нативной стороны на реагирующую нативу.

public class NativeToReactModule extends ReactContextBaseJavaModule {

  public NativeToReactModule(ReactApplicationContext reactContext) {
    super(reactContext);
  }

  @Override
  public String getName() {
    return "NativeToReactModule";
  }

  private static WritableMap convertJsonToMap(JSONObject jsonObject) throws JSONException {
    WritableMap map = new WritableNativeMap();

    Iterator<String> iterator = jsonObject.keys();
    while (iterator.hasNext()) {
      String key = iterator.next();
      Object value = jsonObject.get(key);
      if (value instanceof JSONObject) {
        map.putMap(key, convertJsonToMap((JSONObject) value));
      } else if (value instanceof Boolean) {
        map.putBoolean(key, (Boolean) value);
      } else if (value instanceof Integer) {
        map.putInt(key, (Integer) value);
      } else if (value instanceof Double) {
        map.putDouble(key, (Double) value);
      } else if (value instanceof String) {
        map.putString(key, (String) value);
      } else {
        map.putString(key, value.toString());
      }
    }
    return map;
  }

  @ReactMethod
  public void returnArrayOfObjects(Callback successCallback) throws JSONException {
    List<CustomObject> aList = new ArrayList<CustomObject>();
    Gson g = new Gson();

    aList.add(new CustomObject("Nameone", 1));
    aList.add(new CustomObject("nametwo", 132));

    WritableArray array = new WritableNativeArray();
    for (CustomObject co : aList) {
      JSONObject jo = new JSONObject(g.toJson(co));
      WritableMap wm = convertJsonToMap(jo);
      array.pushMap(wm);
    }

    successCallback.invoke(array);
  }
}

На стороне, реагирующей на нативную, вы можетесоздайте модуль javascript для вашего собственного модуля следующим образом:

import { NativeModules } from "react-native";
module.exports = NativeModules.NativeToReactModule;

Затем вы можете получить доступ к ArrayList, который вы отправили с нативной стороны.

import NativeToReact from "./NativeToReactModule";

...
...
...

NativeToReact.returnArrayOfObjects(array => {
  console.log(array, "The array you sent from the native side");
});

ПРИМЕЧАНИЕ : Ответ не показывает полную настройку для использования собственного модуля.

0 голосов
/ 25 января 2019

Вы должны отобразить свой список в объект JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...