思路:
1.先自定义一个View
2.判断TextView是否点击,这个时候需要一个Type来标识
先看下自定义View
public class BottonSelectLayout extends LinearLayout {
private ArrayList<BottonItem> bottonItems = getResource();
private GridView mGridview;
private BottonItem bottonItem;
private MlayoutAdapter adapter;
private mlayoutClickListener mListener;
public interface mlayoutClickListener {
public void onItemClick(BottonItem mEntity);
}
public void setMLayoutClickListener(mlayoutClickListener listener) {
mListener = listener;
}
private void init() {
if (isInEditMode())
return;
View view = LayoutInflater.from(getContext()).inflate(R.layout.gv, this);
mGridview = (GridView) view.findViewById(R.id.gridView);
adapter = new MlayoutAdapter();
mGridview.setAdapter(adapter);
mGridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (bottonItem != null) {
bottonItem.setType("false");
}
bottonItem = bottonItems.get(position);
bottonItem.setType("true");
adapter.notifyDataSetChanged();
if (mListener != null) {
mListener.onItemClick(bottonItem);
}
}
});
}
public BottonSelectLayout(Context context) {
super(context);
init();
}
public BottonSelectLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public BottonSelectLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public class MlayoutAdapter extends BaseAdapter {
@Override
public int getCount() {
return bottonItems.size();
}
@Override
public BottonItem getItem(int position) {
return bottonItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout_botton_select, null);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.textview);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
BottonItem entity = getItem(position);
holder.textView.setText(entity.getName());
//判断textview是否被点击,true点击,false没点击
if ("true".equals(entity.getType())) {
holder.textView.setBackgroundColor(getResources().getColor(R.color.white));
holder.textView.setTextColor(getResources().getColor(R.color.f45d5d));
} else {
holder.textView.setBackgroundColor(getResources().getColor(R.color.c4));
holder.textView.setTextColor(getResources().getColor(R.color.white));
}
return convertView;
}
class ViewHolder {
TextView textView;
}
}
//如果是后台返回的数据可以在这里接入
public ArrayList<BottonItem> getResource() {
ArrayList<BottonItem> list = new ArrayList<BottonItem>();
BottonItem entity = new BottonItem("红烧鱼");
entity.setType("false");
list.add(entity);
BottonItem entity1 = new BottonItem("三文鱼");
entity1.setType("false");
list.add(entity1);
BottonItem entity2 = new BottonItem("鲤鱼");
entity1.setType("false");
list.add(entity2);
return list;
}
}
public class BottonItem implements Serializable {
private String Type;//判断是否点击
private String name;
public BottonItem(String name) {
this.name = name;
}
public String getType() {
return Type;
}
public void setType(String type) {
Type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}