reyclerView的item點擊刷新


這裏寫圖片描述
xml

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/user_selector_item_default"
    android:orientation="horizontal"
    android:padding="15dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="油品"
        android:maxEms="4"
        android:layout_marginRight="10dp"
        android:textSize="14sp"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_gas"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:listitem="@layout/item_gas"/>

</LinearLayout>

adapter

public class GasTypeAdapter extends RecyclerView.Adapter<GasTypeAdapter.GasTypeHolder> {

    private static final int LAYOUT_ID = R.layout.item_gas;
    public List<String> dataList;
    private Context context;


    public GasTypeAdapter(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
        dataList = new ArrayList<>();
    }

    public OnItemClickListener onItemClickListener;

    @Override
    public GasTypeHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        context = parent.getContext();
        View rootView = View.inflate(context, LAYOUT_ID, null);
        return new GasTypeHolder(rootView);
    }

    @Override
    public void onBindViewHolder(GasTypeHolder holder, int position) {
        holder.setData(context, dataList.get(position), position);
    }

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

    public void addAll(List<String> dataList) {
        this.dataList.addAll(dataList);
        notifyDataSetChanged();
    }

    public void clear() {
        this.dataList.clear();
        notifyDataSetChanged();
    }

    public List<String> getAll() {
        return this.dataList;
    }

    public void notifyDataChange(int position){
        clearSelection(position);
        notifyDataSetChanged();
    }

    private int selectedPos = 0;

    public void clearSelection(int pos) {
        selectedPos = pos;
    }

    class GasTypeHolder extends RecyclerView.ViewHolder {

        private TextView tv_type;

        private View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(onItemClickListener != null){
                    notifyDataChange(getAdapterPosition());
                    onItemClickListener.onItemClickListener(view,getAdapterPosition());
                }
            }
        };

        public GasTypeHolder(View itemView) {
            super(itemView);
            itemView.setOnClickListener(onClickListener);
            tv_type = (TextView) itemView.findViewById(R.id.tv_type);
        }

        public void setData(final Context context, final String str, int position) {
            if (str == null) {
                return;
            }
            if (selectedPos == position) {
                tv_type.setSelected(true);
            }else{
                tv_type.setSelected(false);
            }
            tv_type.setText(str);
        }

    }

}

activity

    private RecyclerView rvGas;
    private GasTypeAdapter gasTypeAdapter;

    rvGas = (RecyclerView) findViewById(R.id.rv_gas);
    rvGas.setLayoutManager(new GridLayoutManager(this, 3));
    rvGas.setNestedScrollingEnabled(false);
    gasTypeAdapter = new GasTypeAdapter(onItemClickListener);
    rvGas.setAdapter(gasTypeAdapter);
    List<String> dataList = new ArrayList<>();
    dataList.add("92#");
    dataList.add("93#");
    dataList.add("95#");
    dataList.add("98#");
    dataList.add("0#");
    gasTypeAdapter.addAll(dataList);

    private OnItemClickListener onItemClickListener = new OnItemClickListener() {
    @Override
    public void onItemClickListener(View view, int position) {
        //油品
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章