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);
}
Sie sollten benutzerdefinierte in Ihrem Listview-Adapter-Klasse, um die bevorzugten Suchfilter verwenden, um Ergebnisse zu erhalten – sam
kann mir einige Beispiel geben. Meister..?? –