FileRvAdapter.java 4.25 KB
package com.sw.laryngoscope.adapter;

import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import com.sw.laryngoscope.R;
import com.sw.laryngoscope.db.FileInfoMonthBean;
import com.sw.laryngoscope.widget.CustomListView;

import java.util.List;

public class FileRvAdapter extends RecyclerView.Adapter<FileRvAdapter.ViewHolder> {
    private Context mContext;
    private OnItemClickLitener listener;//点击事件接口
    private List<FileInfoMonthBean> fileList;
    private ViewHolder viewHolder;
    private View view;

    /**
     * 在构造方法中传入图片地址的数据
     * @param context
     * @param list
     */
    public FileRvAdapter(Context context, List<FileInfoMonthBean> list) {
        this.mContext = context;
        this.fileList = list;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        view = LayoutInflater.from(mContext).inflate(R.layout.rv_item_file, null);
        viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    public void setBeanList(List<FileInfoMonthBean> list) {
        this.fileList = list;
    }

    FileItemAdapter mFileItemAdapter;

    @Override
    public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) {
        //FileInfoBean temp = fileList.get( fileList.size() - position -1 );
        FileInfoMonthBean temp = fileList.get( position );

        holder.txt_title.setText(temp.getRvName());

        setListViewHeightBasedOnChildren(holder.item_ls_file);
        mFileItemAdapter = new FileItemAdapter(mContext, temp.getFileItemList(), position, this);
        holder.item_ls_file.setAdapter(mFileItemAdapter);
        //Logger.d(" getView position " + position + " onBindViewHolder " + temp.getFileItemList().size());
        mFileItemAdapter.notifyDataSetChanged();
    }


    @Override
    public int getItemCount() {
        return fileList.size();
    }

    public OnItemClickLitener getListener() {
        return listener;
    }

    public void setOnItemClickLitener(OnItemClickLitener listener) {
        this.listener = listener;
    }

    public interface OnItemClickLitener {
        void onSubItemsFileClick(int position, int subitemspos, String listMdItemName);
    }

    class ViewHolder extends RecyclerView.ViewHolder {
        TextView txt_title;
        CustomListView item_ls_file;

        public ViewHolder(View itemView) {
            super(itemView);
            txt_title = (TextView) itemView.findViewById(R.id.txt_title);
            item_ls_file = (CustomListView) itemView.findViewById(R.id.item_ls_file);

            /*item_ls_file.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //int position = (Integer) v.getTag();
                    //listener.onItemClick(getPosition());
                }
            });*/
        }
    }

    private void setListViewHeightBasedOnChildren(ListView listView) {
        if (listView == null) {
            return;
        }
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }

    /*listView_user.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick (AdapterView<?> parent, View view, int position, long id ) {
                if ( position == 0 ) {
                    return ;
                }
            }
        });*/
}