RecyclerView簡單使用(無雜質版)

Adapter


import android.view.View;
import android.view.ViewGroup;

import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import androidx.recyclerview.widget.RecyclerView;


import android.content.Context;
import android.view.LayoutInflater;
import android.widget.TextView;


import com.jxnu.nav_search.R;

import java.util.ArrayList;
import java.util.List;


public class RecyclerBaseAdapter extends RecyclerView.Adapter<RecyclerBaseAdapter.ViewHolder> {

    private int layout;

    private Context context;


    //the data
    private ArrayList<?> mData;

    private OnItemClickListener mOnItemClickListener = null;

    private ViewDataBinding viewDataBinding;


    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;

    }

    //define interface
    public interface OnItemClickListener {
        void onItemClick(int position, int layout);
    }


    public RecyclerBaseAdapter(List<?> data, int layout) {
        this.mData = (ArrayList<?>) data;
        this.layout = layout;
    }

    public void updateData(ArrayList<?> data) {
        this.mData = data;
        notifyDataSetChanged();
    }

    /**
     * 初始化設置
     *
     * @param parent
     * @param viewType
     * @return
     */
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        context = parent.getContext();
        // find view
        viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), layout, parent, false);

        // set view
        ViewHolder viewHolder = new ViewHolder(viewDataBinding.getRoot());
        //return holder
        return viewHolder;
    }

    /**
     * 數據的綁定
     *
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        // bind data
        if (layout == R.layout.fragment_list) {
            holder.title.setText("hello world");
        }
    }

    @Override
    public int getItemCount() {
        return mData == null ? 0 : 1000;
    }


    /**
     * 視圖holder
     */
    public class ViewHolder extends RecyclerView.ViewHolder {

        TextView title;


        public ViewHolder(View itemView) {
            super(itemView);

            if (layout == R.layout.fragment_list) {
                title = itemView.findViewById(R.id.tv_4);
            }
        }
    }
}


使用方法

    private void setRecyclerView() {

        RecyclerView recyclerView = findViewById(R.id.rv_show);

        recyclerView.setLayoutManager(new LinearLayoutManager(ScrollingActivity.this));

        List<String> list = new ArrayList<>();

        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");
        list.add("111");


        recyclerView.setAdapter(new RecyclerBaseAdapter(list, R.layout.fragment_list));


        recyclerView.setItemAnimator(new DefaultItemAnimator());
        DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(ScrollingActivity.this, DividerItemDecoration.VERTICAL);
        Drawable drawable = ContextCompat.getDrawable(ScrollingActivity.this, R.color.colorAccent);
        dividerItemDecoration.setDrawable(drawable);
        recyclerView.addItemDecoration(dividerItemDecoration);

    }

    @SuppressLint("HandlerLeak")
    private void setRecyclerView(String query) {
        if (recyclerView == null) {
            recyclerView = findViewById(R.id.rv_show);
            recyclerView.setLayoutManager(new LinearLayoutManager(ScrollingActivity.this));
            recyclerView.setItemAnimator(new DefaultItemAnimator());
            DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(ScrollingActivity.this,
                    DividerItemDecoration.VERTICAL);
            Drawable drawable = ContextCompat.getDrawable(ScrollingActivity.this, R.color.colorAccent);
            dividerItemDecoration.setDrawable(drawable);
            recyclerView.addItemDecoration(dividerItemDecoration);
            //使用handler進行跟新視圖
            handler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    Bundle bundle = msg.getData();
                    List<Datasets> list = bundle.getParcelableArrayList("datapar");
                    recyclerView.setAdapter(new RecyclerBaseAdapter(list, R.layout.fragment_list));
                }
            };
        }


        new Thread(new Runnable() {
            @Override
            public void run() {
                List<Datasets> list = null;
                try {
                    list = scrollAcViewModel.getQuery(query);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                System.out.println("_______---===============");
                System.out.println(list);

                Message msg = new Message();
                Bundle bundle = new Bundle();

                bundle.putParcelableArrayList("datapar", (ArrayList<? extends Parcelable>) list);
                msg.setData(bundle);
                handler.sendMessage(msg);
            }
        }).start();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章