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) {
//油品
}
};