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);

 

 

 

arrow
arrow
    全站熱搜

    JBLin 發表在 痞客邦 留言(0) 人氣()