私はかなりアンドロイドとリアクティブプログラミングの新人です。私は過去2日間、サーバーから投稿を取得し、 ]私のアプリで後で使用されます。ここで問題となるのは、そのPost []をdisplayPostsMethodに渡すと、nullです。ここで活動RxAndroid 2.0.1 subscribeメソッドは変数を設定しません
public class HomeActivity extends AppCompatActivity{
private Post[] postsToDisplay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//get the posts from the server
this.getPostsFromServer();
//dispaly the posts
this.displayPosts(posts);// here are the posts null
}
public void getPostsFromServer() {
PostsProvider.getAllPosts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(posts -> {
this.postsToDispaly = Arrays.copyOf(posts, posts.length);
});
}
}
のコードであり、ここにもgetAllPostsMethod PostsProvider内のクラスからのコードです。
public static Observable<Post[]> getAllPosts(){
return Observable.create((ObservableEmitter<Post[]> e) -> {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("sample url")
.build();
Response response = client.newCall(request).execute();
String json = response.body().string();
Gson gson = new Gson();
Post[] posts = gson.fromJson(json, Post[].class);
e.onNext(posts);
});
}
あなたのjsonを入れてもよろしいですか? –
私はそれがjsonからのものだとは思っていません。なぜなら、私はokhttpを使わず、getAllPosts()でPost []をハードコードしています。 –
'this.displayPosts(posts);を' this.postsToDispaly = Arrays.copyOf(posts、posts.length);の下に移動しようとしましたか? –