Custom List View duvida

Condata Informatica

Member
Licensed User
Boas pessoal,

é a primeira vez que trabalho com o custom list view, e estou necessitando
pegar os Index da CustomListView onde tiver o Valor da Quantidade > 0

tentei alguns metodos porem não obtive sucesso, alguem tem alguma solução ?

Como a imagem descreve!
 

Attachments

Cableguy

Expert
Licensed User
Que metodos tentaste?
que queres fazer com os indexes?

O mais simples sera fazer um ciclo for next para correr todos os indexes e selecionar os de valor zero
 

MaxRosa

Member
Licensed User
Experimente esse código:

B4X:
For c = CLV.Size - 1 To 0 Step -1
Dim p As B4XView = CLV.GetPanel(c)
If p.GetView(3).Text = "0" Then
CLV.RemoveAt(c)
'Ou faz outra coisa
End If

Next
 
Last edited:

Condata Informatica

Member
Licensed User
foi isto, porem ele acusa erro:
java.lang.NumberFormatException: For input string: "(EditText): Left=936, Top=0, Width=288, Height=200, Tag=, Text=10.0"
ou seja ele puxa todos os valores do index,
eu preciso somente dos Index que tiverem a Quantidade superior 0
e pegar somente o Label.text e o edit.text.

ou uma forma de pegar tudo e atribuir somente essas duas propriedades



B4X:
For i=0 To CustomListViewPRODUTOSESCALONADOS.Size -1
          Dim iv As ItemValue = CustomListViewPRODUTOSESCALONADOS.GetValue(i)
                If iv.EditTextQTDECustomListView.Text>0 Then
                       Log(CustomListViewPRODUTOSESCALONADOS.GetValue(i))
                 End If
Next
 
Last edited:

MaxRosa

Member
Licensed User
foi isto, porem ele acusa erro:
java.lang.NumberFormatException: For input string: "(EditText): Left=936, Top=0, Width=288, Height=200, Tag=, Text=10.0"
ou seja ele puxa todos os valores do index,
eu preciso somente dos Index que tiverem a Quantidade superior 0
e pegar somente o Label.text e o edit.text.

ou uma forma de pegar tudo e atribuir somente essas duas propriedades



B4X:
For i=0 To CustomListViewPRODUTOSESCALONADOS.Size -1
                 
        Dim iv As ItemValue = CustomListViewPRODUTOSESCALONADOS.GetValue(i)

          If iv.EditTextQTDECustomListView.Text>0 Then
          Log(CustomListViewPRODUTOSESCALONADOS.GetValue(i))
        End If
    Next
Aqui você está testando se o Text é maior que 0 e não o conteúdo é maior que 0:

B4X:
          If iv.EditTextQTDECustomListView.Text>0 Then
O Edit.Text é uma string. Você precisa pegar o conteúdo do edit, passar para uma variável int e verificar se o valor é maior que zero.
 

Condata Informatica

Member
Licensed User
O Edit.Text é uma string. Você precisa pegar o conteúdo do edit, passar para uma variável int e verificar se o valor é maior que zero.
Hum, porem pra passar como conteudo , eu devo armazenar na EditTextQTDECustomListView.tag ? o valor da quantidade, isto, se é o que eu entendi ?
 

Condata Informatica

Member
Licensed User
montei um Trecho de codigo porem o mesmo fica retorno todos os indexes da lista o que pode ser que estou deixando passar ?
B4X:
Sub Find_items_customLSTview
    Dim i As Int 
    Dim iv As ItemValue= CustomListViewPRODUTOSESCALONADOS.GetValue(i)
    Dim qtdeItems As Int =0
   
        For i=0 To  CustomListViewPRODUTOSESCALONADOS.Size -1
       
        qtdeItems = iv.EditTextQTDECustomListView.Text
        If qtdeItems > 0 Then
            Log(CustomListViewPRODUTOSESCALONADOS.GetValue(i))
        End If
    Next
   
End Sub
OBS: mesmo setando no inicio ou no fim do for o qtdeitems =0 ele sempre entra no if dando o log de todos os Indexes,

mas deveria trazer somente o dos que tem o edtQTDE > 0

alguma sugestão ?
 

Condata Informatica

Member
Licensed User
consegui resolver com este Trecho de codigo,
Obrigado pelo seu tempo e pela grande ajuda Max!!
B4X:
For i=0 To CustomListViewPRODUTOSESCALONADOS.Size -1
        Dim pnl As B4XView = CustomListViewPRODUTOSESCALONADOS.GetPanel(i)
        Dim edtText As B4XView = pnl.GetView(0).GetView(2)
        If edtText.Text > 0 Then
            Log( "Yes " & CustomListViewPRODUTOSESCALONADOS.GetValue(i))
        End If
    Next
 
Top