当前位置:网站首页>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
边栏推荐
- CodeSonar网络研讨会
- AADL inspector fault tree safety analysis module
- ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
- 现在网上开户安全么?想知道我现在在南宁,到哪里开户比较好?
- Introduction to referer and referer policy
- Measure the height of the building
- Mysql子查询关键字的使用方式(exists)
- What are the official stock trading apps in the country? Is it safe to use
- How does codesonar help UAVs find software defects?
- 95年专注安全这一件事 沃尔沃未来聚焦智能驾驶与电气化领域安全
猜你喜欢
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统
万字总结数据存储,三大知识点
C语言 整型 和 浮点型 数据在内存中存储详解(内含原码反码补码,大小端存储等详解)
C language helps you understand pointers from multiple perspectives (1. Character pointers 2. Array pointers and pointer arrays, array parameter passing and pointer parameter passing 3. Function point
Dachang classic pointer written test questions
MySQL约束之默认约束default与零填充约束zerofill
CodeSonar通过创新型静态分析增强软件可靠性
【C语言】指针进阶---指针你真的学懂了吗?
ISO 26262 - 基于需求测试以外的考虑因素
随机推荐
【网络原理的概念】
AADL Inspector 故障树安全分析模块
Guava multithreading, futurecallback thread calls are uneven
What are the official stock trading apps in the country? Is it safe to use
Intelligent transportation is full of vitality. What will happen in the future? [easy to understand]
私募基金在中國合法嗎?安全嗎?
Is it safe to open an account of BOC shares in kainiu in 2022?
[concept of network principle]
FatMouse&#39; Trade(杭电1009)
C language helps you understand pointers from multiple perspectives (1. Character pointers 2. Array pointers and pointer arrays, array parameter passing and pointer parameter passing 3. Function point
Measure the height of the building
Lingyun going to sea | saihe & Huawei cloud: jointly help the sustainable development of cross-border e-commerce industry
Jetty:配置连接器[通俗易懂]
Static analysis of software defects codesonar 5.2 release
写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
Codeforces round 296 (Div. 2) A. playing with paper[easy to understand]
[matrix multiplication] [noi 2012] [cogs963] random number generator
Validutil, "Rethinking the setting of semi supervised learning on graphs"
凌云出海记 | 赛盒&华为云:共助跨境电商行业可持续发展
使用高斯Redis实现二级索引