2017-07-22 2 views
0

Ich habe gesucht, wie man ListView innerhalb SearchView gefiltert werden kann. Aber jetzt versuche ich herauszufinden, wie man sich auf Basis des Top-Ergebnisses mit der Aktivität verbindet.Probleme mit Aktivität und gefiltert ListView

Ich habe mit diesem Code versucht, aber immer noch die gleiche Aktivität, aber unterschiedliche Suchergebnisse.

package com.rahmadewi30.android.kamus; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.SearchView; 

public class Search extends AppCompatActivity implements SearchView.OnQueryTextListener { 

    ListView lvItem; 
    ArrayAdapter<String> adapter; 
    SearchView inputSearch; 
    String[] tumbuhan = new String[]{ 
     "Lumut Tanduk","Lumut Hati","Lumut Daun" ,"Semanggi", "Bakau", 
     "Paku Kawat", "Nanas","Pisang","Mangga"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 

     lvItem = (ListView) findViewById(R.id.listItem); 
     inputSearch = (SearchView) findViewById(R.id.editCari); 
     adapter = new ArrayAdapter<>(Search.this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, tumbuhan); 

     inputSearch.setOnQueryTextListener(this); 
     lvItem.setAdapter(adapter); 
     lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       if (position == 0) { 
        Intent l = new Intent(view.getContext(), ActivityLumut.class); 
        startActivityForResult(l, 0); 
       } else if (position == 1) { 
        Intent l = new Intent(view.getContext(), ActivityLumutHati.class); 
        startActivityForResult(l, 1); 
       } else if (position == 2) { 
        Intent l = new Intent(view.getContext(), ActivityLumutDaun.class); 
        startActivityForResult(l, 2); 
       } 
      } 
     }); 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) { 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     adapter.getFilter().filter(newText); 
     return false; 
    } 

} 
+0

Ein Klick auf das oberste Element ('if (Position == 0) {' ...) immer die gleiche Tätigkeit beginnen, egal, was die item ('view') ist tatsächlich/enthält. – Gooz

+0

Ja, das ist! Kannst du mir helfen, es zu lösen? –

Antwort

0

Sie versuchen diese sollten:

lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    if (position == 0) { 
     Intent myIntent = new Intent(view.getContext(), YourActivityName.class); 
     startActivityForResult(myIntent, 0); 
    } else if (position == 1) { 
     Intent myIntent = new Intent(view.getContext(), Youractivty2.class); 
     startActivityForResult(myIntent, 0); 
    } else if (position == 2) { 
     Intent myIntent = new Intent(view.getContext(), YourActivity3.class); 
     startActivityForResult(myIntent, 0); 
    } else if (position == 3) { 
      Intent myIntent = new Intent(view.getContext(), YourActivity4.class); 
      startActivityForResult(myIntent, 0); 
     } 
    }); 
+0

Es ist genauso, Sie ändern nur die Absichtsvariablen. Wenn ich die dritte Liste filtere, wenn ich sie anklicke, gehe ich einfach zu den ersten ungefilterten Listenaktivitäten. –

Verwandte Themen