
豆瓣Api接口放在这:https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=100&page_start=0
在博客找了好久,好不容易找到一个可以用的,特别感谢接口作者与搬运者!
实现结果如下,目前还比较简陋,后续会进一步完善UI界面:
下面放代码,写的过程有参考B站上代码
//Movie类
public class Movie {
private String title;
private String imgUrl;
private String id;
private String rate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRate() {
return rate;
}
public void setRate(String rate) {
this.rate = rate;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
public Movie(String title, String imgUrl, String id, String rate) {
this.title = title;
this.imgUrl = imgUrl;
this.id = id;
this.rate = rate;
}
}
//item_movie.xml
//用于展示界面的布局activity_movie.xml
//适配器MyRecyclerAdapter类 import android.content.Context; import android.graphics.Bitmap; import android.util.LruCache; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.Volley; import java.util.ArrayList; import java.util.List; public class MyRecyclerAdapter extends RecyclerView.Adapter{ private List pdata = new ArrayList (); private Context context; private void loadImage(String url, ImageView img){ RequestQueue requestQueue = Volley.newRequestQueue(context); ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() { private LruCache cache = new LruCache (10*1024*1024); @Override public Bitmap getBitmap(String url) { return cache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { cache.put(url,bitmap); } }); ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(img,R.mipmap.ic_launcher,R.mipmap.ic_launcher); imageLoader.get(url,imageListener); } public MyRecyclerAdapter(List pdata, Context context) { this.pdata = pdata; this.context = context; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_movie,parent,false); MyViewHolder myViewHolder = new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { Movie movie = pdata.get(position); holder.title.setText(movie.getTitle()); holder.rate.setText( movie.getRate()); loadImage(movie.getImgUrl(),holder.img); } @Override public int getItemCount() { return pdata.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ private ImageView img; private TextView title; private TextView rate; public MyViewHolder(@NonNull View itemView) { super(itemView); img = itemView.findViewById(R.id.item_img); title = itemView.findViewById(R.id.item_title); rate = itemView.findViewById(R.id.item_rate); } } }
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class MovieActivity extends AppCompatActivity {
private RecyclerView recyclerView
private MyRecyclerAdapter myRecyclerAdapter;
private RequestQueue requestQueue;
private List movieList = new ArrayList();
private void initData(){
requestQueue = Volley.newRequestQueue(MovieActivity.this);
String url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=100&page_start=0";
final JsonObjectRequest jsonObjectRequest =new JsonObjectRequest(url, null, new Response.Listener() {
@Override
public void onResponse(JSonObject response) {
try {
JSonArray subjects = response.getJSonArray("subjects");
for (int i = 0; i < subjects.length(); i++) {
JSonObject subject = subjects.getJSonObject(i);
String title = subject.getString("title");
// JSonObject images = subject.getJSonObject("images");
String imgUrl = subject.getString("cover");
String id = subject.getString("id");
String rate = subject.getString("rate");
Movie movie = new Movie(title, imgUrl,id,rate);
movieList.add(movie);
}
myRecyclerAdapter.notifyDataSetChanged();
} catch (JSonException e) {
e.printStackTrace();
Log.d("Movie1",e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Movie2",error.toString());
}
});
requestQueue.add(jsonObjectRequest);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_movie);
initData();
recyclerView = findViewById(R.id.list_movie);
recyclerView.setLayoutManager(new LinearLayoutManager(MovieActivity.this,LinearLayoutManager.VERTICAL,false));
myRecyclerAdapter = new MyRecyclerAdapter(movieList,MovieActivity.this);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(myRecyclerAdapter);
}
}
大功告成!
记得添加Volley依赖和网络权限!
implementation 'com.android.volley:volley:1.1.1'
如果有问题欢迎指出,交流与讨论,您的建议是我进步的动力,万分感谢!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)