Android Question How to get only the selected checkbox index?

gpbimal

Member
Hi!
I'm using CustomListView with student records (about 50 student name list and Checkbox for every students) for daily attendance. My CheckBox name is chkAtn and I've bind the student ID to corresponding Checkbox.Tag. When application starts all checkbox will be checked = true by default. Class teacher will uncheck for absent student only, at the time of attendance.

Now, I have to collect absent student's ID in a list(log). absent sutdents are those for whom class teacher will uncheck the corresponding checkbox.)
How can I do that, Please help...


B4X:
Sub Kolect_Absent
For i = 0 To CLVstd.Size - 1
    If chkAtn.Checked = False Then
        Log(chkAtn.tag)
    End If
Next
End Sub


If full code required then here you are,

B4X:
#Region Activity Attributes
    #FullScreen: False
    #IncludeTitle: False
#End Region

Sub Process_Globals
    Public SPHost As String
    Private GET_CLASS = "get_class", GET_STUDENTS = "get_students" As String
    Type ItemValue (SelChkBox As CheckBox)
End Sub

Sub Globals
    Private spnClass As Spinner
    Dim ClasCode As Map
    Dim CID As Double
    Private CLVstd As CustomListView
    Dim XUI As XUI
   
    Private lblStdInfo As Label
    Private chkAtn As CheckBox
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("LayAttendance")
    ClasCode.Initialize
    Show_Clases
End Sub

Sub Show_Clases
    ExecuteRemoteQuery("Select engname, classid from classid order by classid", GET_CLASS)
End Sub

Sub Show_Students
    ExecuteRemoteQuery("SELECT infocustomer.engname, infostudent.TheRollNo, infostudent.CustIDNO FROM infostudent, infocustomer WHERE (infocustomer.CustIDNO = infostudent.CustIDNO) AND (infostudent.TheSection = 'A') AND (infostudent.ClassId = " & CID & ") ORDER BY infostudent.TheRollNo", GET_STUDENTS)
End Sub

Sub ExecuteRemoteQuery(Query As String, JobName As String)
    Try
        'ProgressDialogShow("Connecting to server...")
        Dim job As HttpJob
        job.Initialize(JobName, Me)
        job.PostString(SPHost, Query)
    Catch
        Log(LastException)
    End Try
End Sub

Sub JobDone(Job As HttpJob)
    'ProgressDialogHide
    If Job.Success Then
        Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        Dim Parser As JSONParser
        Parser.Initialize(res)
        Select Job.JobName
            Case GET_CLASS
                Dim l As List
                l = Parser.NextArray
                If l.Size > 0 Then
                    For i = 0 To l.Size - 1
                    Dim m As Map
                    m = l.Get(i)
                    spnClass.Add(m.Get("engname"))
                    ClasCode.Put(m.Get("engname"), m.Get("classid"))
                    Next
                End If
            Case GET_STUDENTS
                Dim l As List
                l = Parser.NextArray
                If l.Size > 0 Then
                    CLVstd.Clear
                    For i = 0 To l.Size - 1
                        Dim m As Map
                        Dim TheCID As Double
                        m = l.Get(i)
                        Dim p As B4XView = XUI.CreatePanel("")
                        p.SetLayoutAnimated(0, 0, 0, CLVstd.AsView.Width, 50dip)
                        chkAtn.Initialize("chkAtn")
                        chkAtn.Checked = True
                        TheCID = m.Get("CustIDNO")
                        CLVstd.Add(CreateListItem(m.Get("TheRollNo") & " :     " & m.Get("engname") , CLVstd.AsView.Width, 60dip), TheCID)
                    Next
                End If
        End Select
    Else
        Log(Job.ErrorMessage)
        ToastMessageShow("Error: " & Job.ErrorMessage, True)
    End If
    Job.Release
End Sub

Sub spnClass_ItemClick (Position As Int, Value As Object)
    CID = ClasCode.Get(Value)
    Log(CID)
    Show_Students
End Sub

Sub CreateListItem(Text As String, Width As Int, Height As Int) As Panel
    Dim p As B4XView = XUI.CreatePanel("")
    p.SetLayoutAnimated(0, 0, 0, Width, Height)
    p.LoadLayout("LayControl")
    lblStdInfo.Text = Text
    Return p
End Sub

Sub CLVstd_ItemClick (Index As Int, Value As Object)

End Sub

Sub Kolect_Absent
For i = 0 To CLVstd.Size - 1
    If chkAtn.Checked = False Then
        Log(chkAtn.tag)
    End If
Next
End Sub

Sub btnPost_Click
    Kolect_Absent
End Sub
 
Top