2017-08-08 2 views
-3

Kann mir jemand helfen, wie man falsches Ergebnis von searchview von listview beheben. zum Beispiel habe ich Daten aus der Listenansicht (A, B, C, D, E, F, G) Wenn ich Daten B von Searchview suche, klicke ich darauf, immer Daten A, die es anzeigen, und wenn ich nicht suchte Daten von searchview das Ergebnis, wenn wahr, ich klicke auf Daten A zeigen A, B zeigen B ...Suche Filter Listview bekommen falsche Ergebnisse von searchview

Das ist mein Code.

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.widget.SearchView; 
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.example.ihsan.kamjogja.models.Listkampus; 
import com.example.ihsan.kamjogja.models.Model; 
import com.example.ihsan.kamjogja.rest.RestAPI; 

import java.util.List; 

import okhttp3.OkHttpClient; 
import retrofit2.Call; 
import retrofit2.Callback; 
import retrofit2.Response; 
import retrofit2.Retrofit; 
import retrofit2.converter.gson.GsonConverterFactory; 

public class MainActivity extends Activity implements       NavigationView.OnNavigationItemSelectedListener,       AdapterView.OnItemClickListener { 


//deklarasi varibel untuk mengirim data ke activity lain 
public static final String ID_KAMPUS = "id"; 
public static final String NAMA_KAMPUS = "namakampus"; 
public static final String TLP   = "tlp"; 
public static final String ALAMAT  = "alamat"; 
public static final String WEB   = "website"; 
public static final String LAT   = "lat"; 
public static final String LOG   = "log"; 
//jurusan1 
public static final String Nj1 = "jurusan1"; 
public static final String Jj1 = "jenjang1"; 
public static final String Ak1 = "akreditasi1"; 
//jurusan2 
public static final String Nj2 = "jurusan2"; 
public static final String Jj2 = "jenjang2"; 
public static final String Ak2 = "akreditasi2"; 
//jurusan3 
public static final String Nj3 = "jurusan3"; 
public static final String Jj3 = "jenjang3"; 
public static final String Ak3 = "akreditasi3"; 
//jurusan4 
public static final String Nj4 = "jurusan4"; 
public static final String Jj4 = "jenjang4"; 
public static final String Ak4 = "akreditasi4"; 
//jurusan5 
public static final String Nj5 = "jurusan5"; 
public static final String Jj5 = "jenjang5"; 
public static final String Ak5 = "akreditasi5"; 
//jurusan6 
public static final String Nj6 = "jurusan6"; 
public static final String Jj6 = "jenjang6"; 
public static final String Ak6 = "akreditasi6"; 
//jurusan7 
public static final String Nj7 = "jurusan7"; 
public static final String Jj7 = "jenjang7"; 
public static final String Ak7 = "akreditasi7"; 
//jurusan8 
public static final String Nj8 = "jurusan8"; 
public static final String Jj8 = "jenjang8"; 
public static final String Ak8 = "akreditasi8"; 
//jurusan9 
public static final String Nj9 = "jurusan9"; 
public static final String Jj9 = "jenjang9"; 
public static final String Ak9 = "akreditasi9"; 
//jurusan10 
public static final String Nj10 = "jurusan10"; 
public static final String Jj10 = "jenjang10"; 
public static final String Ak10 = "akreditasi10"; 
//jurusan11 
public static final String Nj11 = "jurusan11"; 
public static final String Jj11 = "jenjang11"; 
public static final String Ak11 = "akreditasi11"; 
//jurusan12 
public static final String Nj12 = "jurusan12"; 
public static final String Jj12 = "jenjang12"; 
public static final String Ak12 = "akreditasi12"; 
//jurusan13 
public static final String Nj13 = "jurusan13"; 
public static final String Jj13 = "jenjang13"; 
public static final String Ak13 = "akreditasi13"; 
//jurusan14 
public static final String Nj14 = "jurusan14"; 
public static final String Jj14 = "jenjang14"; 
public static final String Ak14 = "akreditasi14"; 
//jurusan15 
public static final String Nj15 = "jurusan15"; 
public static final String Jj15 = "jenjang15"; 
public static final String Ak15 = "akreditasi15"; 
//jurusan16 
public static final String Nj16 ="jurusan16"; 
public static final String Jj16 ="jenjang16"; 
public static final String Ak16 ="akreditasi16"; 

//listview untuk menampilkan data 
private ListView listview; 
private android.widget.SearchView searchview; 
//varibel books bertipe List dan List tersebut berdasarkan objek Listkampus 
private List<Listkampus> books; 
ProgressDialog loading; 
private OkHttpClient.Builder httpClient; 



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


    //inisialisasi listview 
    searchview = (android.widget.SearchView) findViewById(R.id.pencarian); 
    listview = (ListView) findViewById(R.id.list); 


    //memanggil method untuk mengambil data kampus 
    getkampus(); 

    //setting onItemClickListener untuk listview 
    listview.setOnItemClickListener(this); 


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    //setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 


private void getkampus() { 
    //Ketika Aplikasi mengambil data kita akan melihat progress dialog 
    loading = ProgressDialog.show(this,"Sedang Mengambil Data","Harap Tunggu Sebentar ",false,false); 


    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Config.ROOT_URL) 
      .addConverterFactory(GsonConverterFactory.create())//GsonConverter untuk parsing json 
      .build(); 

    RestAPI service = retrofit.create(RestAPI.class); 

    Call<Model> call = service.loadListBooks(); 
    call.enqueue(new Callback<Model>() { //Asyncronous Request 
     @Override 
     public void onResponse(Call<Model> call, Response<Model> response) { 
      loading.dismiss(); 
      List<Listkampus> kampus = response.body().getListkampus(); 

      //memasukkan data dari varibel kampus ke books 
      books = kampus; 
      //memanggil method untuk menampilkan list 
      showList(); 
     } 
     @Override 
     public void onFailure(Call<Model> call, Throwable t) { 

     } 
    }); 
} 

private void showList() { 
    //String array untuk menyimpan nama semua nama kampus 
    String[] items = new String[books.size()]; 

    for (int i = 0; i < books.size(); i++) { 
     items[i] = books.get(i).getNama(); 

    } 


    //Membuat Array Adapter for listview 
    final ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.my_list_font, items); 

    //setting adapter untuk listview 
    listview.setAdapter(adapter); 
    searchview.setOnQueryTextListener(new android.widget.SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return true; 
     } 
     @Override 
     public boolean onQueryTextChange(String text) { 
      adapter.getFilter().filter(text); 
      return true; 
     } 

    }); 

} 


//method ini akan dieksekusi ketikan listitem diklik 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    //membuat intent 
    Intent intent = new Intent(this, InfoKampus.class); 
    //mengambil buku dari list 
    Listkampus listkampus = books.get(position); 
    //menambahkan detail buku untuk intent 
    intent.putExtra(ID_KAMPUS, listkampus.getIdKampus()); 
    intent.putExtra(NAMA_KAMPUS, listkampus.getNama()); 
    intent.putExtra(TLP, listkampus.getTlp()); 
    intent.putExtra(ALAMAT, listkampus.getAlamat()); 
    intent.putExtra(WEB, listkampus.getWebsite()); 
    intent.putExtra(LAT, listkampus.getLat()); 
    intent.putExtra(LOG, listkampus.getLog()); 
    //1 
    intent.putExtra(Nj1, listkampus.getNj1()); 
    intent.putExtra(Jj1, listkampus.getJj1()); 
    intent.putExtra(Ak1, listkampus.getAk1()); 
    //2 
    intent.putExtra(Nj2, listkampus.getNj2()); 
    intent.putExtra(Jj2, listkampus.getJj2()); 
    intent.putExtra(Ak2, listkampus.getAk2()); 
    //3 
    intent.putExtra(Nj3, listkampus.getNj3()); 
    intent.putExtra(Jj3, listkampus.getJj3()); 
    intent.putExtra(Ak3, listkampus.getAk3()); 
    //4 
    intent.putExtra(Nj4, listkampus.getNj4()); 
    intent.putExtra(Jj4, listkampus.getJj4()); 
    intent.putExtra(Ak4, listkampus.getAk4()); 
    //5 
    intent.putExtra(Nj5, listkampus.getNj5()); 
    intent.putExtra(Jj5, listkampus.getJj5()); 
    intent.putExtra(Ak5, listkampus.getAk5()); 
    //6 
    intent.putExtra(Nj6, listkampus.getNj6()); 
    intent.putExtra(Jj6, listkampus.getJj6()); 
    intent.putExtra(Ak6, listkampus.getAk6()); 
    //7 
    intent.putExtra(Nj7, listkampus.getNj7()); 
    intent.putExtra(Jj7, listkampus.getJj7()); 
    intent.putExtra(Ak7, listkampus.getAk7()); 
    //8 
    intent.putExtra(Nj8, listkampus.getNj8()); 
    intent.putExtra(Jj8, listkampus.getJj8()); 
    intent.putExtra(Ak8, listkampus.getAk8()); 
    //9 
    intent.putExtra(Nj9, listkampus.getNj9()); 
    intent.putExtra(Jj9, listkampus.getJj9()); 
    intent.putExtra(Ak9, listkampus.getAk9()); 
    //10 
    intent.putExtra(Nj10, listkampus.getNj10()); 
    intent.putExtra(Jj10, listkampus.getJj10()); 
    intent.putExtra(Ak10, listkampus.getAk10()); 
    //11 
    intent.putExtra(Nj11, listkampus.getNj11()); 
    intent.putExtra(Jj11, listkampus.getJj11()); 
    intent.putExtra(Ak11, listkampus.getAk11()); 
    //12 
    intent.putExtra(Nj12, listkampus.getNj12()); 
    intent.putExtra(Jj12, listkampus.getJj12()); 
    intent.putExtra(Ak12, listkampus.getAk12()); 
    //13 
    intent.putExtra(Nj13, listkampus.getNj13()); 
    intent.putExtra(Jj13, listkampus.getJj13()); 
    intent.putExtra(Ak13, listkampus.getAk13()); 
    //14 
    intent.putExtra(Nj14, listkampus.getNj14()); 
    intent.putExtra(Jj14, listkampus.getJj14()); 
    intent.putExtra(Ak14, listkampus.getAk14()); 
    //15 
    intent.putExtra(Nj15, listkampus.getNj15()); 
    intent.putExtra(Jj15, listkampus.getJj15()); 
    intent.putExtra(Ak15, listkampus.getAk15()); 
    //16 
    intent.putExtra(Nj16, listkampus.getNj16()); 
    intent.putExtra(Jj16, listkampus.getJj16()); 
    intent.putExtra(Ak16, listkampus.getAk16()); 

    startActivity(intent); 

} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

Sie sollten benutzerdefinierte in Ihrem Listview-Adapter-Klasse, um die bevorzugten Suchfilter verwenden, um Ergebnisse zu erhalten – sam

+0

kann mir einige Beispiel geben. Meister..?? –

Antwort

Verwandte Themen