当前位置:网站首页>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
边栏推荐
- 开户还得用身份证银行卡安全吗,我是小白不懂
- 测量楼的高度
- Cocos2d-x game archive [easy to understand]
- uva 12230 – Crossing Rivers(概率)「建议收藏」
- UVA 11080 – Place the Guards(二分图判定)
- 恶魔奶爸 A0 英文零基础的自我提升路
- You want to kill a port process, but you can't find it in the service list. You can find this process and kill it through the command line to reduce restarting the computer and find the root cause of
- Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
- 写一下跳表
- Codesonar enhances software reliability through innovative static analysis
猜你喜欢

Static analysis of software defects codesonar 5.2 release

Tensorflow2. How to run under x 1 Code of X

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

CodeSonar网络研讨会

Helix QAC 2020.2 new static test tool maximizes the coverage of standard compliance

Don't fall behind! Simple and easy-to-use low code development to quickly build an intelligent management information system

神兵利器——敏感文件发现工具

智能软件分析平台Embold

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

Small guide for rapid formation of manipulator (11): standard nomenclature of coordinate system
随机推荐
Jetty:配置连接器[通俗易懂]
开户必须往账户里面赚钱吗,资金安全吗?
软件缺陷静态分析 CodeSonar 5.2 新版发布
神兵利器——敏感文件发现工具
Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
margin 等高布局
[award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统
Cocos2d-x 游戏存档[通俗易懂]
论文解读(ValidUtil)《Rethinking the Setting of Semi-supervised Learning on Graphs》
Mongodb learn from simple to deep
Mahout-Pearson correlation的实现
The latest version of codesonar has improved functional security and supports Misra, c++ parsing and visualization
Static analysis of software defects codesonar 5.2 release
Referrer和Referrer-Policy简介
使用高斯Redis实现二级索引
sqlHelper的增删改查
ISO 26262 - 基于需求测试以外的考虑因素
FTP steps for downloading files from Huawei CE switches
Codeforces round 296 (Div. 2) A. playing with paper[easy to understand]