close
1.gradle依賴:
implementation 'com.android.support:recyclerview-v7:28.0.0'
2.adapter
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.Holder> { List<ItemVo> itemVos; public RecycleViewAdapter(List<ItemVo> item){//init adapter的時候將item傳入使用 itemVos = item; } @NonNull @Override public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.photo_item,parent,false);//create Layout return new Holder(v);//將layout包進viewHolder } @Override public void onBindViewHolder(@NonNull Holder holder, int position) {//每次item出現在畫面中 都會從這裡更新資料 ItemVo item = itemVos.get(position); holder.setId(item.getId()+""); holder.setTitle(item.getTitle()); holder.setThumbnailUrl(item.getThumbnailUrl()); } @Override public int getItemCount() { return itemVos.size(); } public class Holder extends ViewHolder {//自製viewHolder (舉例說明:ViewHolder = activity, adapter = viewModel) private Handler handler = new Handler(); private TextView id; private TextView title; private ImageView image; private String thumbnailUrl; public Holder(@NonNull View itemView) { super(itemView); id = itemView.findViewById(R.id.id); title = itemView.findViewById(R.id.title); image = itemView.findViewById(R.id.image); } public void setId(String idName) { id.setText(idName); } public void setTitle(String titleName){ title.setText(titleName); } public void setThumbnailUrl(final String thumbnailUrl) { // this.thumbnailUrl = thumbnailUrl; new Thread(() -> { try { URL url = new URL(thumbnailUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); handler.post(() -> { image.setImageBitmap(BitmapFactory.decodeStream(input)); }); }catch (Exception e){ Log.d("test", "setThumbnailUrl: " + e.toString()); } }).start(); } } }
3.Activity
List<ItemVo> item = new ArrayList<>(); private RecyclerView recyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager layoutManager;
mAdapter = new RecycleViewAdapter(this,item); recyclerView.setAdapter(mAdapter);
recyclerView = findViewById(R.id.recycle); recyclerView.setHasFixedSize(true); layoutManager = new GridLayoutManager(this,4);//recycleView 以 gridView型態顯示,一行為4個item recyclerView.setLayoutManager(layoutManager);
全站熱搜