1. The user selects the date on the app side to be able to query this month's time clock information, and displays the different color on the calendar to display to the user, of course this calendar is Recyclerview made out, only each line displays 7, represents seven days of the week.
2. The data acquisition and analysis of the employee clock-in is done on the server side, through the application side of the date and user name, to complete the extraction of user attendance analysis, and return the results to the app, using WebService.
3. Bind the data and Recyclerview on the app side, use different colors for different results, that's it, the results are good.
The most critical part of the inside is 1. Calculates the number of days of the month under the selected date. 2. The first day of the month is the days of the week, as the next, but also need to gradually improve, is July 2017
Knowing the two can be conveniently assembled on the. NET side of the calendar data and the first line of the offset came, the specific time analysis and return value, according to their own ideas to design the line, I am returning a simple string. The code is as follows.
Dim month as String = CDate (sdate). Month Dim Year as String = CDate (sdate). Year Dim days As Integer = Date.daysinmonth (year, month) Dim Szd as String = hr. Getgs (YHM) Dim Str As String = "" Dim img As String Dim k_rq As String = year & "-" & Month & Amp "-" & "1" Dim k_week as Integer = CDate (K_RQ). DayOfWeek ' The first day of the month is the days of the week Dim Dt as DataTable = New DataTable Dt.Columns.Add ("date") Dt.Columns.Add ("Analysis") For i = 1 to K_week Dim dr as DataRow = Dt.newrow Dr. Item (0) = "" Dr. Item (1) = "1-0" Dt.Rows.Add (DR) Next for i = 1 to days RQ = year & "-" & Month & "-" & I img = Kq_fenxi (RQ, Name, SZD) Dim dr as DataRow = Dt.newrow Dr. Item (0) = i dr. Item (1) = img Dt.Rows.Add (dr) Next Str = OA. Datatable2json (Dt) Return Str
The return value of the test is as follows, and the JSON is uploaded to the app for data binding.
<string xmlns= "http://tempuri.org/" >[{"date": "1", "Analysis": "1-0"},{"date": "2", "Analysis": "1-1"},{"date": "3", "Analysis": "1-1"},{" Date ":" 4 "," Analysis ":" 1-1 "},{" date ":" 5 "," Analysis ":" 1-2 "},{" date ":" 6 "," Analysis ":" 1-1 "},{" date ":" 7 "," Analysis ":" 1-1 "},{" date ":" 8 "," Analysis ":" 1-0 "},{" Date ":" 9 "," Analysis ":" 1-1 "},{" date ":" 10 "," Analysis ":" 1-1 "},{" date ":" 11 "," Analysis ":" 1-1 "},{" date ":" 12 "," Analysis ":" 1-1 "},{" date ":" 13 "," Analysis ":" 1-1 " },{"Date": "14", "Analysis": "1-1"},{"date": "15", "Analysis": "1-0"},{"date": "16", "Analysis": "1-3"},{"date": "17", "Analysis": "1-1"},{"date": "18", "Analysis": "1-1"},{"date": "19", "Analysis": "1-1"},{"date": "20", "Analysis": "1-1"},{"date": "21", "Analysis": "1-3"},{"date": "22", "Analysis": "1-0"},{"date": "23", "Analysis": "1-0"},{"date": "24", "Analysis": "1-1"},{"date": "25", "Analysis": "1-1"},{"date": "26", "Analysis": "1-1"},{"date": "27", "Analysis": "1-1"},{"date": "28", "Analysis": "1-1"},{"date": "29", "Analysis": "1-0"},{"date": "30", "Analysis": "1-1"},{"date": "31", "Analysis": "1-1"}]</string>
The following is the key part of Andriod studio, the code is as follows:
private void LoadData (String methodname,string cs1,string cs2) {try{WebService ws = New WebService (Met HODNAME,CS1,CS2, ""); Ws.execute (); LOG.E ("Kq-rq", CS1); LOG.E ("Kq-uid", CS2); Ws.setonasyres (New Asyres () {@Override public void Ondaterec (String msg) { String Jsonstr; jsonstr=msg; LOG.E ("Kq-str", msg); try {mdatas=new arraylist<filelist> (); FileList map; Jsonarray Jsonarray = new Jsonarray (JSONSTR); for (int i = 0; i < jsonarray.length (); i++) {Jsonobject Jsonobject = Jsonarray.getjsonobje CT (i); Map=new FileList (jsonobject.getstring ("date"), jsonobject.getstring ("Analysis")); Mdatas.add (map); } myKqadapter recycler=new Mykqadapter (getactivity (), Mdatas); Recyclerview recyclerview= (Recyclerview) Vi.findviewbyid (r.id.lv_list); Linearlayoutmanager LayoutManager = new Linearlayoutmanager (getactivity ());Gridlayoutmanager girdmanger=new Gridlayoutmanager (getactivity (), 7);Recyclerview.setlayoutmanager (Girdmanger); If you can determine the height of each item is fixed, set this option to raise high performance recyclerview.sethasfixedsize (true); Create and set adapter Recyclerview.additemdecoration (new Myitemdec ()); Add divider line Recyclerview.setadapter (recycler); Recyclerview.setitemanimator (New Defaultitemanimator ()); } catch (Jsonexception e) {}}}); }catch (Exception e) {}}
Increase the LOG.E, mainly to look at the parameters sent and return the result is correct, red code is to let Recyclerview each line display seven
In the custom data adapter, we parse the returned results and set different background colors based on the results.
public void Onbindviewholder (Myviewholder holder, final int position) {FileList da=mdatas.get (position); Holder.v.setbackgroundcolor (Color.White); String msg=da.getmsg (); if (listener! = null) {Holder.v.setonclicklistener (new View.onclicklistener () {@Override public void OnClick (View v) {Listener.onitemclick (v,position); } }); }//Holder.tv.setGravity (gravity.center_horizontal);//Set text horizontally centered Holder.tv.setText (Da.getname ()); Holder.msg.setText (""); if (Msg.equals ("1-1")) {Holder.v.setbackgroundcolor (color.green); All day Work} if (Msg.equals ("1-2")) {Holder.v.setbackgroundcolor (Color.yellow);//half-day work} if (Msg.equals ("1-3")) {Holder.v.setbackgroundcolor (Color.yellow);//half-day work} if (Msg.equals ("1-0") ) {Holder.v.setbackgroundcolor (color.white);//Rest All day} }
Well, basically a calendar-based attendance screen is out, behind you can slowly add the table header, increase the click on the event, the user click on the display of detailed clock time.
Use Recyclerview in Android studio to make a calendar that shows time-out