搜索过滤器列表查看错误搜索结果
问题描述:
任何人都可以帮助我如何修复listview的searchview错误的结果。 例如我有来自列表视图(A,B,C,D,E,F,G)的数据当我从searchview搜索数据B时,点击它,总是显示它的数据A,以及当我没有搜索时来自searchview的数据结果如果为真,我点击数据A显示A,B显示B ...搜索过滤器列表查看错误搜索结果
这是我的代码。
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);
}
你应该使用自定义您的ListView适配器类的内部过滤器,以获得最佳搜索结果 – sam
ü可以给我一些例子。主..?? –