<uses-permission android:name="android.permission.INTERNET"></uses-permission>android { compileSdkVersion 25 buildToolsVersion "26.0.1" defaultConfig { applicationId "com.bawei.retrofitandjavastudy" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" jackOptions { enabled true } } compileOptions{ //设置JDK1.8 sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' 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:25.3.1' compile 'com.github.bumptech.glide:glide:3.7.0' compile files('libs/universal-image-loader-1.9.5.jar') compile files('libs/universal-image-loader-1.9.3-with-sources.jar') }
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/re" ></android.support.v7.widget.RecyclerView><ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" android:id="@+id/img" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv" android:text="aaaa" />public class Api { public static final String BASE_PATH = "http://m.yunifang.com/"; }自己添加一个Bean类就好了public interface ApiService { /** * 结合Retrofit+RxJava * http://service.meiyinkeqiu.com/service/ads/cptj * @param * @return */ @GET("yunifang/mobile/home") rx.Observable<News> getNoParams(); }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= (TextView) itemView.findViewById(R.id.tv); img= (ImageView) itemView.findViewById(R.id.img); } } }import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.widget.Toast; import com.bawei.retrofitandjavastudy.api.Api; import java.util.List; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import rx.Observable; import rx.Observer; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public class MainActivity extends AppCompatActivity { private ApiService apiService; private RecyclerView re; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); re = (RecyclerView) findViewById(R.id.re); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(MainActivity.this); re.setLayoutManager(linearLayoutManager); getNoParams(); } private void getNoParams() { //创建Retrofit Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_PATH).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build(); //通过动态代理得到网络接口对象 //http://service.meiyinkeqiu.com/service/ads/cptj //"http://service.meiyinkeqiu.com/service/" // retrofit.create(ApiServices); 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; // for (int i = 0; i < ads.size(); i++) { // Log.i("xxx", ads.get(i).efficacy); // mtv.setText(ads.get(i).efficacy); // } MyAdapter adapter=new MyAdapter(MainActivity.this,ads); re.setAdapter(adapter); } }); } }
Retrofilt+RXjava
最新推荐文章于 2021-08-24 17:13:06 发布