2017-07-20 6 views
1

Also habe ich ein Problem, ich habe ein Array namens teses, das hat einige Positionen und ich benutze diese Positionen, um die ID des Pakets zu erhalten, das ich klicke. Aber wenn ich diese Positionen suche, kann ich nicht die Position speichern, die sie ursprünglich waren? Hier ist der Code:Liste speichernBeiträge anzeigen auf

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test_list); 

    testList = (ListView) findViewById(R.id.testList); 
    ArrayAdapter<String> adapter = new Test_row_adapter(TestList.this,testes); 




    testList.setAdapter(adapter); 


    testList.setOnItemClickListener(
      new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 




        int ID_WANTED=myDB.getAllIds().get(i); 

         Intent i2 = new Intent(TestList.this,TesteInfoDisplay.class); 


         String DateClickedDisciplina = myDB.getDisciplina(ID_WANTED); 
        String DateClickedSala = myDB.getSala(ID_WANTED); 
        String DateClickedDia = myDB.getDates(ID_WANTED); 
        String DateClickedHora = myDB.getHour(ID_WANTED); 



        i2.putExtra("dateID", ID_WANTED); 
        i2.putExtra("returnedData", DateClickedDia); 
        i2.putExtra("returnedHour", DateClickedHora); 
        i2.putExtra("returnedDisciplina", DateClickedDisciplina); 
        i2.putExtra("returnedSala", DateClickedSala); 

         startActivity(i2); 

        } 

      } 
    ); 
} 

public static void RestartArray(){ 
    DataBaseHelper myDB = CustomApplication.getDatabaseHelper(); 
    for(int digg=1; contador2<=myDB.getHowMany(); contador2++) { 



       int ID_WANTED = myDB.getAllIds().get(contador2 - 1); 

       testes.add("Data: " + myDB.getDates(ID_WANTED) + "  " + myDB.getHour(ID_WANTED) + "\n" + "Discilpina: " + myDB.getDisciplina(ID_WANTED)); 
    } 


} 


@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu,menu); 
    MenuItem searchItem = menu.findItem(R.id.item_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

    searchView.setOnQueryTextListener(
      new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String query) { 
        return false; 
       } 

       @Override 
       public boolean onQueryTextChange(String newText) { 

        ArrayList<String> tempList = new ArrayList<>(); 

        for(String temp : testes){ 
         if(temp.toLowerCase().contains(newText.toLowerCase())){ 
          tempList.add(temp); 
         } 
         ArrayAdapter<String> adapter = new Test_row_adapter(TestList.this,tempList); 
         testList.setAdapter(adapter); 


        } 
        return true; 
       } 
      } 
    ); 


    return super.onCreateOptionsMenu(menu); 
} 

}

Ich möchte die Positionen speichern sie in waren, bevor die Suche gemacht wurde.

Antwort

0

Sie ändern die Listenansicht mit der temporären Suchliste.

So Ihre ursprüngliche Liste wird nicht geändert. Wenn Sie also nach dem Suchen auf die Zeile klicken, erhalten Sie den Text in der ausgewählten Zeile und suchen den Index des Textes in der Liste "Hoden". Dadurch erhalten Sie die Position des Textes in der aktuellen Listenansicht.

Immer wenn Sie den Array-Adapter verwenden, wird das Standard-Layout von Android zum Auffüllen jeder Zeile in der Listenansicht verwendet. Bitte verwenden Sie den folgenden Code, um den Text über die Elementklickmethode zu erhalten.

Textansicht textView = (TextView) view.findViewById (R.id.list_content); Zeichenfolge text = textView.Text(). ToString();

+0

Also in Position sollte es die ursprüngliche Position sein? –

+0

Leider habe ich Ihre Frage nicht erhalten. Sie müssen sich jedoch keine Gedanken über die Position des Textes in der Liste machen. Alles, was Sie tun müssen, ist nach der Suche, wenn Sie auf das Element in der Liste klicken, erhalten Sie den Text aus der Liste (ich habe bereits erwähnt, wie Sie den Text aus angeklickt Position in Listview) und suchen Sie die Position der Text in der aktuellen Liste "Hoden". Auf diese Weise können Sie wissen, was die Position des Textes in der tatsächlichen ListView ist. –

Verwandte Themen