依赖 compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.android.support:recyclerview-v7:26.+' java8要在android里加android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { applicationId "com.example.lx_20171103" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" jackOptions { enabled true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions{ //设置JDK1.8 sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 一定要加网络权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Api类public class Api { public static final String BASE_PATH = "http://m.yunifang.com/"; // public static final String BASE_URL = "https://api.github.com/"; // public static final String HOME_URL="http://api.expoon.com/AppNews/getNewsList/"; }
ApiServicepublic interface ApiService { /** * 结合Retrofit+RxJava * http://service.meiyinkeqiu.com/service/ads/cptj * @param * @return */ @GET("yunifang/mobile/home") rx.Observable<News> getNoParams(); }
News类是一个Bean类MainActivity主页面public class MainActivity extends AppCompatActivity { private RecyclerView recycler; private TextView mtv; private ApiService apiService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // mtv = (TextView) findViewById(R.id.tv); recycler = (RecyclerView) findViewById(R.id.recycler); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(MainActivity.this); recycler.setLayoutManager(linearLayoutManager); getNoParams(); } private void getNoParams() { //创建Retrofit Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_PATH).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build(); //通过动态代理得到网络接口对象 apiService = retrofit.create(ApiService.class); //得到Observable Observable<News> observable = apiService.getNoParams();//获取数据源 Subscription subscribe = observable.subscribeOn(Schedulers.io())//IO线程做耗时操作 .observeOn(AndroidSchedulers.mainThread())//在主线程更新UI .subscribe(new Observer<News>() { //完成 @Override public void onCompleted() { Toast.makeText(MainActivity.this, "onCompleted", Toast.LENGTH_LONG).show(); Log.d("MainActivity", "onCompleted: "); } //异常 @Override public void onError(Throwable e) { Log.d("MainActivity", "onError: " + e.getMessage()); } // 加载中 @Override public void onNext(News news) { Log.d("MainActivity", "onNext: "); List<News.DataBean.DefaultGoodsListBean> ads = news.data.defaultGoodsList; Myadapter myadapter = new Myadapter(MainActivity.this, ads); recycler.setAdapter(myadapter); } }); } }Myadapter 类public class Myadapter extends RecyclerView.Adapter<Myadapter.ViewHolder> { private Context context; private List<News.DataBean.DefaultGoodsListBean> list; private final ImageLoader loader; public Myadapter(Context context, List<News.DataBean.DefaultGoodsListBean> list) { this.context = context; this.list = list; ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(context); loader = ImageLoader.getInstance(); loader.init(configuration); } @Override public Myadapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(Myadapter.ViewHolder holder, int position) { holder.name.setText(list.get(position).goods_name); loader.displayImage(list.get(position).goods_img,holder.img); } @Override public int getItemCount() { return list.size(); } public class ViewHolder extends RecyclerView.ViewHolder{ public TextView name; public ImageView img; public ViewHolder(View itemView) { super(itemView); name=itemView.findViewById(R.id.good_name); img=itemView.findViewById(R.id.img); } } }
//主页面布局<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler"></android.support.v7.widget.RecyclerView> //adapter类布局<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/good_name" /> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/img"/>
用RXJava,java8,Retrofit,RecyclerView显示
最新推荐文章于 2021-05-28 21:21:53 发布