RecyclerView网络获取信息

来源:互联网 发布:网络机柜标准 编辑:程序博客网 时间:2024/05/16 19:55

//主Activity

public class MainActivity extends AppCompatActivity implements MainActivityViewListener {    private RecyclerView thirdRecyclerview;    private MainActivityPresenter presenter;    private MyAdapter adapter;    private List<Bean.SongListBean> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Fresco.initialize(this);        thirdRecyclerview= (RecyclerView) findViewById(R.id.third_recyclerview);        thirdRecyclerview.setLayoutManager(new LinearLayoutManager(this));        adapter=new MyAdapter(MainActivity.this,list);        presenter = new MainActivityPresenter(this);        thirdRecyclerview.setAdapter(adapter);//        adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {//            @Override//            public void onItemClick(View view, int position) {//                Intent in=new Intent(MainActivity.this,Main2Activity.class);//                startActivity(in);//            }//        });        presenter.getData(true);    }    @Override    public void callBackSuccess(Bean bean) {            adapter.setData(bean);    }    @Override    public void callBackFailure(int code) {    }}
//主布局

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="com.bawei.gouwuchedemo.MainActivity">    <android.support.v7.widget.RecyclerView        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:id="@+id/third_recyclerview"      /></LinearLayout>
//适配器

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private Context context;    private List<Bean.SongListBean> list;    public MyAdapter(Context context,List<Bean.SongListBean> list) {        this.context = context;       this.list = list;    }    public void setData(Bean bean) {        if (this.list == null) {            this.list = new ArrayList<>();        }        this.list.addAll(bean.getSong_list());        notifyDataSetChanged();    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);        IViewHolder holder = new IViewHolder(view);        return holder;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {        IViewHolder viewHolder = new IViewHolder(holder.itemView);        ViewGroup.LayoutParams params = viewHolder.img.getLayoutParams();//得到item的LayoutParams布局参数        viewHolder.img.setLayoutParams(params);//把params设置给itemView布局        viewHolder.tv1.setText(list.get(position).getTitle());        viewHolder.tv2.setText(list.get(position).getAuthor());        //ImageLoader.getInstance().displayImage(list.get(position).getPic_big(),viewHolder.img,MyApp.getDisp());        Uri uri = Uri.parse(list.get(position).getPic_big());        viewHolder.img.setImageURI(uri);        viewHolder.itemView.setTag(position);    }    @Override    public int getItemCount() {        return list == null ? 0 : list.size();    }    public class IViewHolder extends RecyclerView.ViewHolder {        @BindView(R.id.tv1)        TextView tv1;        @BindView(R.id.tv2)        TextView tv2;        @BindView(R.id.img)        SimpleDraweeView img;//        private final ImageView img;//        private final TextView tv1;//        private final TextView tv2;        public IViewHolder(View itemView) {            super(itemView);            ButterKnife.bind(this, itemView);//            img = itemView.findViewById(R.id.img);//            tv1 = itemView.findViewById(R.id.tv1);//            tv2 = itemView.findViewById(R.id.tv2);        }    }}

//适配器布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    xmlns:fresco="http://schemas.android.com/apk/res-auto">    <com.facebook.drawee.view.SimpleDraweeView        android:scaleType="fitXY"        android:padding="10dp"        android:id="@+id/img"        android:src="@mipmap/ic_launcher_round"        android:layout_width="120dp"        android:layout_height="wrap_content"        fresco:viewAspectRatio="1.33"/>    <!--<!– other attributes –>-->    <LinearLayout        android:orientation="vertical"        android:layout_width="match_parent"        android:layout_height="match_parent">        <TextView            android:id="@+id/tv1"            android:padding="10dp"            android:text="成都"            android:textSize="20sp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <TextView            android:id="@+id/tv2"            android:padding="10dp"            android:textSize="20sp"            android:text="二货_无法长大"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    </LinearLayout>

//MODEL层

public class MainActivityModel extends Activity {   // String u = "http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0";    public void getData(boolean up, final MainActivityModelListener listener){        OkHttpClient okHttpClient = new OkHttpClient.Builder()                .addInterceptor(new LoggingInterceptor())                .build();        Retrofit retrofit = new Retrofit.Builder()                .baseUrl(Api.benUrl)                .addConverterFactory(GsonConverterFactory.create())                .client(okHttpClient)                .build();        ApiSevert apiSevert = retrofit.create(ApiSevert.class);        Call<Bean> call = apiSevert.getNoPrea();        call.enqueue(new Callback<Bean>() {            @Override            public void onResponse(Call<Bean> call, Response<Bean> response) {                Bean bean = response.body();                //List<Bean.SongListBean> song_list = bean.getSong_list();                listener.callBackSuccess(bean);            }            @Override            public void onFailure(Call<Bean> call, Throwable t) {            }        });    }}

//M层接口

public interface MainActivityModelListener {    public void callBackSuccess(Bean bean);    public void callBackFailure(int code);}
View层

public interface MainActivityViewListener {    public void callBackSuccess(Bean bean);    public void callBackFailure(int code);}

//Presenter层

ublic class MainActivityPresenter {    private MainActivityViewListener listener;    private MainActivityModel mainActivityModel;    public MainActivityPresenter(MainActivityViewListener listener) {        this.listener = listener;        this.mainActivityModel = new MainActivityModel();    }    public void getData(boolean up){        mainActivityModel.getData(up, new MainActivityModelListener() {            @Override            public void callBackSuccess(Bean bean) {                listener.callBackSuccess(bean);            }            @Override            public void callBackFailure(int code) {                listener.callBackFailure(code);            }        });    }}

//网络获取接口

 //ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0       public static final String benUrl="http://tingapi.ting.baidu.com/v1/restserver/";
//GET请求

public interface ApiSevert {    @GET("ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0")    Call<Bean> getNoPrea();}

//权限
<uses-permission android:name="android.permission.INTERNET"/>
//依赖
   compile 'com.android.support:appcompat-v7:26.+'    compile 'com.android.support.constraint:constraint-layout:1.0.2'    compile 'io.reactivex:rxandroid:1.1.0'    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 'com.google.code.gson:gson:2.8.1'    compile 'com.android.support:recyclerview-v7:26.+'    compile 'com.squareup.okhttp3:okhttp:3.2.0'    compile 'com.squareup.okio:okio:1.5.0'    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'    compile 'com.facebook.fresco:fresco:0.12.0'    testCompile 'junit:junit:4.12'