Activity
package com.animee.day08.demo03;
import android.os.AsyncTask;
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 com.animee.day08.NetConfig;
import com.animee.day08.R;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class ListVideoActivity extends AppCompatActivity {
private RecyclerView mRv;
private LinearLayoutManager manager;
private List<VideoBean.ItemsBean> mDatas = new ArrayList<>();
private VideoAdapter videoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_video);
// 1,找空间
mRv = (RecyclerView) findViewById(R.id.list_video_rv);
// 2.设置布局管理者
manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
mRv.setLayoutManager(manager);
// 3.设置数据源
// 4.设置适配器
videoAdapter = new VideoAdapter(this,mDatas);
mRv.setAdapter(videoAdapter);
loadWebData(NetConfig.VIDEO_PATH);
}
private void loadWebData(final String videoPath) {
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) { //在子线程,做耗时操作
String content = HttpUtils.getJSONContent(videoPath);
Log.i("xiaozhi", "doInBackground: ==="+content);
return content;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
// 解析数据
Gson gson = new Gson();
VideoBean videoBean = gson.fromJson(s, VideoBean.class);
List<VideoBean.ItemsBean> items = videoBean.getItems();
mDatas.addAll(items);
videoAdapter.notifyDataSetChanged();
}
}.execute();
}
}
Adapter
package com.animee.day08.demo03;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.animee.day08.R;
import com.squareup.picasso.Picasso;
import java.util.List;
import cn.jzvd.JZVideoPlayer;
import cn.jzvd.JZVideoPlayerStandard;
/**
* Created by Administrator on 2018/1/4.
*/
public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoViewHolder>{
private Context context;
private List<VideoBean.ItemsBean>mDatas;
public VideoAdapter(Context context, List<VideoBean.ItemsBean> mDatas) {
this.context = context;
this.mDatas = mDatas;
}
@Override
public VideoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_video_demo03,parent,false);
VideoViewHolder holder = new VideoViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(VideoViewHolder holder, int position) {
VideoBean.ItemsBean bean = mDatas.get(position);
try {
holder.authorTv.setText("发布者:"+bean.getUser().getLogin());
}catch (Exception e){
holder.authorTv.setText("发布者:无名");
}
holder.commentTv.setText(bean.getComments_count()+"");
holder.likeTv.setText(bean.getShare_count()+"");
// 获取要播放的网址
String low_url = bean.getLow_url();
String content = bean.getContent();
holder.player.setUp(low_url, JZVideoPlayer.SCREEN_WINDOW_FULLSCREEN,content);
// 获取缩略图网址
String pic_url = bean.getPic_url();
// ImageView thumbImageView = holder.player.thumbImageView;
Picasso.with(context).load(pic_url).into(holder.player.thumbImageView);
// 保存正在播放的那条的位置
holder.player.positionInList = position;
}
@Override
public int getItemCount() {
return mDatas.size();
}
class VideoViewHolder extends RecyclerView.ViewHolder{
JZVideoPlayerStandard player;
TextView authorTv,commentTv,likeTv;
public VideoViewHolder(View itemView) {
super(itemView);
player = (JZVideoPlayerStandard) itemView.findViewById(R.id.item_player);
authorTv = (TextView) itemView.findViewById(R.id.item_tv_publish);
commentTv = (TextView) itemView.findViewById(R.id.item_tv_comment);
likeTv = (TextView) itemView.findViewById(R.id.item_tv_like);
}
}
}
网络下载
package com.animee.day08.demo03;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by Administrator on 2018/1/4.
*/
public class HttpUtils {
public static String getJSONContent(String path){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
byte[]buf = new byte[1024];
int hasRead = 0;
while((hasRead = is.read(buf))!=-1){
baos.write(buf,0,hasRead);
}
} catch (Exception e) {
e.printStackTrace();
}
return baos.toString();
}
}
实体类自己写
XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.animee.day08.demo03.ListVideoActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/list_video_rv"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<cn.jzvd.JZVideoPlayerStandard
android:id="@+id/item_player"
android:layout_width="match_parent"
android:layout_height="220dp">
</cn.jzvd.JZVideoPlayerStandard>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="#eee">
<TextView
android:id="@+id/item_tv_publish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="发布者:Animee"/>
<TextView
android:id="@+id/item_tv_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:drawableLeft="@mipmap/heart"
android:layout_alignParentRight="true"
android:text="111"
android:gravity="center_vertical"/>
<TextView
android:id="@+id/item_tv_comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:drawableLeft="@mipmap/info"
android:text="222"
android:gravity="center_vertical"
android:layout_toLeftOf="@+id/item_tv_like"
android:layout_marginLeft="30dp"/>
</RelativeLayout>
</LinearLayout>