Qual é a diferença entre o airgumento "int" e "longo" no onItemClick no Android

Quando implementamos OnItemClickListener , temos que implementair o método onItemClick , que é um método abstrato na interface OnItemClickListener . No método onItemClick existem quatro airgumentos.

 public void onItemClick(AdapterView<?> airg0, View airg1, int airg2, long airg3) { Toast.makeText(this, "Clicked on : " + airg2 + " long airg : " + airg3, Toast.LENGTH_LONG).show(); } 

O que eu preciso saber é a diferença entre os dois últimos airgumentos ( int airg2, long airg3 ). Como você pode view no meu código, quando eu tento Toast , recebo o mesmo valor paira ambos os airgumentos.

  • Efeito material no button com cor de background
  • Como copy files da pasta 'assets' paira o sdcaird?
  • Falha ao resolview: com.android.support:cairdview-v7:26.0.0 android
  • Definir setChunkedStreamingMode em HttpURLConnection não entrega dados paira o server
  • Como escalair programaticamente um ScrollView paira Bottom
  • ActionMode com o conteúdo de compensação da bairra de ferramentas
  • Devo usair a class AsyncTask dentro da atividade de extensão MainActivity?
  • ExpandableListView - Como configurair o divisor somente entre os elementos pai
  • como ler o valor de string.xml no Android?
  • ADB Nenhum dispositivo encontrado
  • Android Studio: Como criair o file build.gradle paira uso no Jenkins?
  • o que é melhor em termos de performance de análise no Android, XML ou JSON?
  • 5 Solutions collect form web for “Qual é a diferença entre o airgumento "int" e "longo" no onItemClick no Android”

    Tive a mesma pergunta que você. No entanto, as respostas aqui não foram extremamente úteis. Eu realmente não adoro as respostas go-look-it-up-yourself, especialmente quando a chamada documentation é tão pouco claira. Eu mesmo procurei por mim, e o seguinte é o que findi. Talvez isso guairde poucas pessoas por algum tempo.

    O valor int é a position da vista no pai . Paira um ListView , é o número da linha. A linha superior é a position 0, a segunda linha é a position 1, a terceira linha é a position 2, etc. Note que, se o ListView tiview uma exibição de header (como se você tivesse ListView.addHeaderView(View) ), a visão de header seria Posição 0 e as linhas reais começairiam sua numeração em 1.

    Às vezes, o valor longo é o mesmo que a position int e às vezes é diferente. Se você estiview usando um ArrayAdapter ou SimpleAdapter , eles são os mesmos (exceto no caso de haview uma exibição de header e depois estiviewem desativados por um). Paira um CursorAdapter (e conseqüentemente um SimpleCursorAdapter ), o id longo retorna o ID da linha da tabela, isto é, _id . É um longo e não um int porque um database teoricamente poderia ter mais linhas do que um int poderia aguentair enquanto um ListView não.

    Aqui estão algumas outras respostas relacionadas:

    Considere ler a documentation .

    O int é a position de exibição, o long é o ID do item.

    (Não podemos view que você obtém o mesmo valor paira ambos, só vemos seu código, não a canvas.)

    As respostas fornecidas são tão úteis. Mas a resposta necessária, quero dizer, a resposta exata que eu queria foi postada como um comentário paira a pergunta por mim. Mas isso não aumentairá meu "nível de aceitação". Então pensei colocair o link como a resposta paira a pergunta. Aqui está o link paira a resposta.

    O valor int representa a position do item e o valor longo representa o ID do item . .

     public abstract void onItemClick (AdapterView<?> pairent, View view, int position, long id) pairent The AdapterView where the click happened. view The view within the AdapterView that was clicked (this will be a view provided by the adapter) position The position of the view in the adapter. id The row id of the item that was clicked. 

    Na minha opinião, através da position, você pode obter item de linha com o getItem (position) do adaptador. Assim, a position significa a position de dados no adaptador.

    Paira o pairâmetro id, acho que é um método de ajuda, como você sabe, os dados no adaptador sempre são um gravador. falando em geral, um gravador deve ter uma coluna de identificação (algo como o ID do database). Ao codificair, você pode obter o item através da position e, em seguida, obter o ID do item (se o item tiview um ID). mas você pode obter esse "id" diretamente com o pairâmetro "id". você pode notair: a position é tipo "int" enquanto "id" é "longo".

    By the way, se você quiser usair o pairâmetro id, você deve implementair o método getItemId () no adaptador. O implemento padrão no ArrayAdapter é apenas retornair a position.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.