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'
阅读全文
0 0
- RecyclerView网络获取信息
- 获取网络配置信息
- 获取网络IP信息
- linux获取网络信息
- 获取网络连接信息
- Qt获取网络信息
- ZMY_HTttpUtils获取网络信息
- 获取Android网络连接信息
- Android 获取网络状态信息
- 获取本机网络信息
- Qt4获取本地网络信息
- python获取网络文件信息
- ioctl获取网络接口信息
- linux编程获取网络信息
- iOS 获取设备网络信息
- HttpURLConnection网络获取天气预报信息
- 网络摄像头实时获取信息
- Android 获取网络相关信息
- 日期的加减计算
- springboot程序无法访问静态资源
- Extra Workloads
- Spring各jar包的作用
- Tensorflow实战学习(三十四)【实现Word2Vec】
- RecyclerView网络获取信息
- django项目几个主要文件
- 变量x,y,z赋初值2.5,然后在屏幕上打印这些变量的值。
- Tensorflow实战学习(三十五)【实现基于LSTM语言模型】
- deep learning
- OpenCV人脸识别之一:数据收集和预处理
- 解决oracle中插入大字段时,报ORA-01461错。
- 十分钟教你配置frp实现内网穿透
- 从学习 Paddle 开始学习深度学习