2017-04-25 4 views
0

Ich habe eine Listenansicht mit einer Option zum Öffnen einer neuen Aktivität durch Klicken auf die Elemente auf der Listenansicht und ich habe auch eine Suchoption. Das Problem, dem ich gegenüberstehe, ist das Öffnen einer bestimmten Aktivität, wenn ein Objekt gesucht und gefunden wird. Die Positionsnummer ändert sich automatisch zu 0 und der Punkt, den ich gesucht und gefunden habe, öffnet die Aktivität der Aktivität der Position 0 statt ihrer eigenen Aktivität. Ich verstehe das Problem, kann es aber nicht lösen. Brauche Hilfe!öffnet nicht die erforderliche Aktivität aufgrund der Änderung der Position des Artikels nach der Änderung in der Listenansicht android

package dev.edmt.advancedsearchbar; 

    import android.content.Intent; 
    import android.graphics.Color; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.support.v7.widget.ListViewCompat; 
    import android.support.v7.widget.Toolbar; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 

    import com.miguelcatalan.materialsearchview.MaterialSearchView; 

    import java.util.ArrayList; 
    import java.util.List; 

    public class MainActivity extends AppCompatActivity { 
    MaterialSearchView searchView; 
    ListView lstView; 
    final String[] values = 
     {"Android ListView Item 1", 
       "Android ListView Item 2", 
     "Simple List View In Android", 
       "List View onClick Event", 
       "Android List View OnItemClickListener", 
     "Open New Activity When ListView item Clicked", 
       "List View onClick Source Code", 
       "List View Array Adapter Item Click", 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setTitle("Material Search"); 
    toolbar.setTitleTextColor(Color.parseColor("#FFFFFF")); 

    lstView = (ListView) findViewById(R.id.lstView); 


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, values); 

    lstView.setAdapter(adapter); 

    searchView = (MaterialSearchView)findViewById(R.id.search_view); 

    searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() { 
     @Override 
     public void onSearchViewShown() { 

     } 

     @Override 
     public void onSearchViewClosed() { 

      //If closed Search View , lstView will return default 
      lstView = (ListView)findViewById(R.id.lstView); 
      ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1, values); 
      lstView.setAdapter(adapter); 

     } 
    }); 

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

     @Override 
     public boolean onQueryTextChange(String newText) { 

      if(newText != null && !newText.isEmpty()){ 
       List<String> lstFound = new ArrayList<String>(); 
       for(String item:values){ 
        if(item.toString().toLowerCase().contains(newText.toString().toLowerCase())) 
         lstFound.add(item); 
       } 

       ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,lstFound); 
       lstView.setAdapter(adapter); 
      } 
      else{ 
       //if search text is null 
       //return default 
       ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,values); 
       lstView.setAdapter(adapter); 
      } 
      return true; 
     } 

    }); 

    lstView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      if (position == 0) { 
       Intent myIntent1 = new Intent(view.getContext(), Product.class); 
       startActivityForResult(myIntent1, 0); 
      } 

      if (position == 1) { 
       Intent myIntent = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent, 0); 
      } 

      if (position == 2) { 
       Intent myIntent = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent, 0); 
      } 

      if (position == 3) { 
       Intent myIntent = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent, 0); 
      } 

      if (position == 4) { 
       Intent myIntent = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent, 0); 
      } 

      if (id == 5) { 
       Intent myIntent5 = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent5, 0); 
      } 

      if (position == 6) { 
       Intent myIntent = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent, 0); 
      } 

      if (position == 7) { 
       Intent myIntent = new Intent(view.getContext(), test.class); 
       startActivityForResult(myIntent, 0); 
      } 
     } 
    }); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_item,menu); 
    MenuItem item = menu.findItem(R.id.action_search); 
    searchView.setMenuItem(item); 
    return true; 
} 

}

Antwort

0

ändern unten Code:

if (position == 0) { 
       Intent myIntent1 = new Intent(view.getContext(), Product.class); 
       startActivityForResult(myIntent1, 0); 
      } 

mit folgenden Code:

String text = ((TextView) view).getText().toString(); 
    if(text.equals("String_text_of_1st_position")) { 
Intent myIntent1 = new Intent(view.getContext(), Product.class); 
        startActivityForResult(myIntent1, 0); 

} 
Verwandte Themen