13 | * Created by wangchenlong on 16/1/2.
14 | */
15 | public interface GitHubService {
16 | String ENDPOINT = "https://api.github.com";
17 |
18 | // 获取库, 获取的是数组
19 | @GET("/users/{user}/repos")
20 | Observable
18 | * Created by wangchenlong on 16/1/2.
19 | */
20 | public class ListAdapter extends RecyclerView.Adapter
21 | * Created by wangchenlong on 16/1/2.
22 | */
23 | public class ReposListActivity extends Activity {
24 | @Bind(R.id.repos_rv_list) RecyclerView mRvList;
25 |
26 | @Inject GitHubService mGitHubService;
27 |
28 | @Override protected void onCreate(Bundle savedInstanceState) {
29 | super.onCreate(savedInstanceState);
30 | setContentView(R.layout.activity_repos_list);
31 | ButterKnife.bind(this);
32 |
33 | DemoApplication.component().inject(this);
34 |
35 | LinearLayoutManager manager = new LinearLayoutManager(this);
36 | manager.setOrientation(LinearLayoutManager.VERTICAL);
37 | mRvList.setLayoutManager(manager);
38 |
39 | ListAdapter adapter = new ListAdapter();
40 | mRvList.setAdapter(adapter);
41 | loadData(adapter);
42 | }
43 |
44 | // 加载数据
45 | private void loadData(ListAdapter adapter) {
46 | mGitHubService.getRepoData("SpikeKing")
47 | .subscribeOn(Schedulers.newThread())
48 | .observeOn(AndroidSchedulers.mainThread())
49 | .subscribe(adapter::setRepos);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/clwang/chunyu/me/wcl_dagger_demo/modules/ApiModule.java:
--------------------------------------------------------------------------------
1 | package clwang.chunyu.me.wcl_dagger_demo.modules;
2 |
3 | import javax.inject.Singleton;
4 |
5 | import clwang.chunyu.me.wcl_dagger_demo.contents.GitHubService;
6 | import dagger.Module;
7 | import dagger.Provides;
8 | import retrofit.GsonConverterFactory;
9 | import retrofit.Retrofit;
10 | import retrofit.RxJavaCallAdapterFactory;
11 |
12 | /**
13 | * 接口模块
14 | *
15 | * Created by wangchenlong on 16/1/2.
16 | */
17 | @Module
18 | public class ApiModule {
19 |
20 | @Provides
21 | @Singleton
22 | protected GitHubService provideGitHubService() {
23 | Retrofit retrofit = new Retrofit.Builder()
24 | .baseUrl(GitHubService.ENDPOINT)
25 | .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 添加Rx适配器
26 | .addConverterFactory(GsonConverterFactory.create()) // 添加Gson转换器
27 | .build();
28 | return retrofit.create(GitHubService.class);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/clwang/chunyu/me/wcl_dagger_demo/modules/MainModule.java:
--------------------------------------------------------------------------------
1 | package clwang.chunyu.me.wcl_dagger_demo.modules;
2 |
3 | import android.app.Application;
4 | import android.content.res.Resources;
5 |
6 | import javax.inject.Singleton;
7 |
8 | import clwang.chunyu.me.wcl_dagger_demo.DemoApplication;
9 | import dagger.Module;
10 | import dagger.Provides;
11 |
12 | /**
13 | * 主要模块, 提供Application和resources.
14 | *