豆瓣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 ListmovieList = 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条)