当前位置:网站首页>GridView defines its own time for typesetting "suggestions collection"
GridView defines its own time for typesetting "suggestions collection"
2022-07-07 21:00:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
The company needs to do a time typesetting , Prototypes such as the following
Because of the gridView, There used to be a lot of typesetting , Most of all, I want to use one checkbox Get it done .
Later it was proved that the function could be achieved . But the layout is messy . It's better to write more honestly ( Go straight to the code )
What's wrong with bad technology? Please correct it
The first is the home page :
public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
private HashSet<Integer> shou = new HashSet<Integer>();
private int[] Mark = {1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button);
final WrapGridView wrapGridView = (WrapGridView) findViewById(R.id.gridview);
final DayTimeAdapter dayTimeAdapter = new DayTimeAdapter(this, Mark);
wrapGridView.setAdapter(dayTimeAdapter);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MyActivity.this, "fdsgs", Toast.LENGTH_SHORT).show();
shou = dayTimeAdapter.remark();
Iterator<Integer> iterator = shou.iterator();
while (iterator.hasNext()) {
Log.i("mark", iterator.next() + "");
}
}
});
}
}Mainly Used to pass in the representation array And accept to return the selected logo
Define your own gridView:
public class WrapGridView extends GridView{
public WrapGridView(Context context) {
super(context);
}
public WrapGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public WrapGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction()==MotionEvent.ACTION_MOVE){
return true;// No sliding
}
return super.dispatchTouchEvent(ev);
}
}Here is Lailai no sliding It's just onMeasure Method It's just that you need to set the height and width in the code later
Finally, the adapter :
public class DayTimeAdapter extends BaseAdapter{
private ArrayList<Integer> Mark = new ArrayList<Integer>();
private String[] Time = {"8:00", "8:30", "9:00", "9:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30",
"15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00"};
private LayoutInflater mInflater;
private HashSet<Integer> returnMark = new HashSet<Integer>();
public DayTimeAdapter(Context context, int[] m) {
mInflater = LayoutInflater.from(context);
for (int i = 0; i < m.length; i++) {
Mark.add(m[i]);
}
}
@Override
public int getCount() {
return Mark.size();
}
@Override
public Object getItem(int i) {
return Mark.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
DayTimeHolder dayTimeHolder=null;
if (view == null||view.getTag()==null) {
view = mInflater.inflate(R.layout.item_time, null);
dayTimeHolder=new DayTimeHolder();
dayTimeHolder.checkBox = (CheckBox) view.findViewById(R.id.checkBox);
dayTimeHolder.timeName= (TextView) view.findViewById(R.id.textView);
view.setTag(dayTimeHolder);
}else {
dayTimeHolder = (DayTimeHolder) view.getTag();
}
dayTimeHolder.timeName.setText(Time[i]);
int a = Mark.get(i);
if (a == 0) {
view.setBackgroundColor(Color.parseColor("#04385A"));
dayTimeHolder.checkBox.setVisibility(View.INVISIBLE);
dayTimeHolder.checkBox.setClickable(false);
}
final View finalView = view;
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
finalView.setBackgroundColor(Color.parseColor("#F0AB4E"));
// Log.i("mark","shoushoushou");
} else {
finalView.setBackgroundColor(Color.parseColor("#000000"));
}
}
};
dayTimeHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Message msg = new Message();
if (b) {
msg.what = 1;
Log.i("mark", "111111111111");
returnMark.add(i);
} else {
msg.what = 2;
Log.i("mark", "22222222222222");
returnMark.remove(i);
}
handler.sendMessage(msg);
}
});
return view;
}
public HashSet remark() {
return returnMark;
}
}
class DayTimeHolder{
public CheckBox checkBox;// multi-select button
public TextView timeName;// Time name
}Here is the Direct initialization gridview structure .
It's used in handler and message It is necessary to dynamically update the selected status .
I haven't written this for a long time , In addition to technology, our industry has accumulated experience .
alas . The more you learn, the lazier you feel ..
.
.
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/116279.html Link to the original text :https://javaforall.cn
边栏推荐
- MinGW MinGW-w64 TDM-GCC等工具链之间的差别与联系「建议收藏」
- 开户还得用身份证银行卡安全吗,我是小白不懂
- 如何挑选基金产品?2022年7月份适合买什么基金?
- Lingyun going to sea | yidiantianxia & Huawei cloud: promoting the globalization of Chinese e-commerce enterprise brands
- Can Huatai Securities achieve Commission in case of any accident? Is it safe to open an account
- 阿洛的烦恼
- Guava multithreading, futurecallback thread calls are uneven
- Nebula Importer 数据导入实践
- MySQL storage expression error
- ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
猜你喜欢

C语言 整型 和 浮点型 数据在内存中存储详解(内含原码反码补码,大小端存储等详解)

【OpenCV 例程200篇】223. 特征提取之多边形拟合(cv.approxPolyDP)

不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统

Intelligent software analysis platform embold

H3C s7000/s7500e/10500 series post stack BFD detection configuration method

使用枚举实现英文转盲文
Codesonar enhances software reliability through innovative static analysis

Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围

如何满足医疗设备对安全性和保密性的双重需求?

使用高斯Redis实现二级索引
随机推荐
C语言 整型 和 浮点型 数据在内存中存储详解(内含原码反码补码,大小端存储等详解)
Data sorting in string
神兵利器——敏感文件发现工具
Alibaba cloud award winning experience: how to mount NAS file system through ECS
[matrix multiplication] [noi 2012] [cogs963] random number generator
Referrer和Referrer-Policy简介
智能软件分析平台Embold
死锁的产生条件和预防处理[通俗易懂]
Implement secondary index with Gaussian redis
恶魔奶爸 C
Écrivez une liste de sauts
【函数递归】简单递归的5个经典例子,你都会吗?
权限不足
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
Cocos2d-x 游戏存档[通俗易懂]
Tensorflow2.x下如何运行1.x的代码
Introduction to referer and referer policy
gridView自己定义做时间排版「建议收藏」
H3C s7000/s7500e/10500 series post stack BFD detection configuration method
如何挑选基金产品?2022年7月份适合买什么基金?