2017-01-06 3 views
0

Я пытался понять RxJava 2 и как работать с ним. Я также пытаюсь понять RxJava путем преобразования моего кода в код RxJava. Но я все еще не могу понять. Я бы очень помог, если кто-нибудь еще сможет объяснить мне, как сделать перекодировку.Конвертировать код в RxJava2 Код

Это код, который я пытаюсь кода в RxJava:

private static User getUserFomCursor(Cursor cursor) { 
     if (cursor == null || cursor.getCount() == 0) { 
      return null; 
     } else { 
      int myUserIDColumnIndex = cursor.getColumnIndex("_USER_ID"); 
      int usernameColumnIndex = cursor.getColumnIndex("USER_NAME"); 
      int userPasswordColumnIndex = cursor.getColumnIndex("USER_PASSWORD"); 
      int firstNameColumnIndex = cursor.getColumnIndex("FIRST_NAME"); 
      int middleNameColumnIndex = cursor.getColumnIndex("MIDDLE_NAME"); 
      int lastNameColumnIndex = cursor.getColumnIndex("LAST_NAME"); 
      int emailAddressColumnIndex = cursor.getColumnIndex("EMAIL_ADDRESS"); 
      int phoneNumberColumnIndex = cursor.getColumnIndex("PHONE_NUMBER"); 
      int profilePictureColumnIndex = cursor.getColumnIndex("PROFILE_PICTURE"); 
      try { 
       User user = new User(
         cursor.getInt(myUserIDColumnIndex), cursor.getString(usernameColumnIndex), 
         cursor.getString(userPasswordColumnIndex), cursor.getString(firstNameColumnIndex), 
         cursor.getString(middleNameColumnIndex), cursor.getString(lastNameColumnIndex), 
         cursor.getString(emailAddressColumnIndex), cursor.getString(phoneNumberColumnIndex), 
         cursor.getString(profilePictureColumnIndex)); 
       return user; 
      } catch (Exception e) { 
       return null; 
      } 
     } 
    } 

public ArrayList<User> getMyUsers() { 
     User user = new User(); 
     ArrayList <User> userArrayList = new ArrayList<User>(); 
     open(); 
     try { 
      Cursor cursor = userLocalDatabase.query("User", null, null, null, null, null, null); 
      while (cursor.moveToNext()) { 
       user = getUserFomCursor(cursor); 
       userArrayList.add(user); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     close(); 
     return userArrayList; 
    } 

Я пытался сделать метод getMyUsers() в наблюдаемую. Но я все еще смущен тем, как подойти к этой проблеме. Я был бы очень признателен, если бы кто-то указал мне в правильном направлении. :)

ответ

1

Вы должны быть в состоянии сделать что-то вроде:

public Observable<User> getMyUsers() { 
    return Observable.create(subscriber -> { 

     open(); 
     try { 
      Cursor cursor = userLocalDatabase.query("User", null, null, null, null, null, null); 
      while (cursor.moveToNext()) { 
       User user = getUserFomCursor(cursor); 
       subscriber.onNext(user); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     close(); 
     subscriber.onCompleted(); 
    }); 
}