2016-09-23 17 views
0

onCreate()内でRecyclerViewのアダプタを設定しようとしています。 notifyDatasetChanged()はメインスレッドでのみ呼び出すことができます。しかし、どのようにこれを達成することができますか?ここまでのコードはjava.lang.IllegalMonitorStateException:notify()の前にスレッドによってオブジェクトがロックされていない - onResponse

RecyclerView recyclerViewSt; 
List<GitHubstarredRepos> myDataSource = new ArrayList<>(); 
RecyclerView.Adapter myAdapter; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

    recyclerViewSt = (RecyclerView) findViewById(R.id.starred_repos_recycler_view); 
    recyclerViewSt.setLayoutManager(new LinearLayoutManager(this)); 

    myAdapter = new StarredReposAdapter(myDataSource, R.layout.list_item_starred_repo, 
      getApplicationContext()); 

    recyclerViewSt.setAdapter(myAdapter); 
} 

public void loadStarredRepos (View view){ 
    GitHubStarredRepoAPI apiService = 
      ApiClient.getClient().create(GitHubStarredRepoAPI.class); 

    Call<List<GitHubstarredRepos>> call = apiService.getStarredRepoName(newString); 
    call.enqueue(new Callback<List<GitHubstarredRepos>>() { 
     @Override 
     public void onResponse(Call<List<GitHubstarredRepos>> call, Response<List<GitHubstarredRepos>> 
       response) { 

      myDataSource.clear(); 
      myDataSource.addAll(response.body()); 
      recyclerViewSt.notify(); 

    } 

ありがとうございます!

答えて

1

通知する代わりに、RecyclerViewAdapterに通知してください。

+0

ああ、簡単!どうもありがとう! – user6456773

+0

私の喜び.. ..もし私が手伝ったら私の答えを受け入れる。 :) – LearnPainLess

関連する問題