Android 无法在ListView中使用SearchView
我不知道为什么,但在我的ListView中搜索不起作用:(请,帮助Android 无法在ListView中使用SearchView,android,listview,searchview,Android,Listview,Searchview,我不知道为什么,但在我的ListView中搜索不起作用:(请,帮助 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_users); usersList = (ListView)findViewById(R.id.usersList); noUsers
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_users);
usersList = (ListView)findViewById(R.id.usersList);
noUsersText = (TextView)findViewById(R.id.noUsersText);
searchView = (SearchView)findViewById(R.id.searchView);
pd = new ProgressDialog(Users.this);
pd.setMessage("Загрузка...");
pd.show();
String url = "https://android-messenger-2f255.firebaseio.com/users.json";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>(){
@Override
public void onResponse(String s) {
doOnSuccess(s);
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError) {
System.out.println("" + volleyError);
}
});
RequestQueue rQueue = Volley.newRequestQueue(Users.this);
rQueue.add(request);
usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
UserDetails.chatWith = al.get(position);
startActivity(new Intent(Users.this, Chat.class));
}
});
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al);
usersList.setAdapter(adapter);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
});
}
public void doOnSuccess(String s){
try {
JSONObject obj = new JSONObject(s);
Iterator i = obj.keys();
String key = "";
while(i.hasNext()){
key = i.next().toString();
if(!key.equals(UserDetails.username)) {
al.add(key);
}
totalUsers++;
}
} catch (JSONException e) {
e.printStackTrace();
}
if(totalUsers <=1){
noUsersText.setVisibility(View.VISIBLE);
usersList.setVisibility(View.GONE);
}
else{
noUsersText.setVisibility(View.GONE);
usersList.setVisibility(View.VISIBLE);
usersList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al));
}
pd.dismiss();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_log_out:
Intent Logout = new Intent(this,Login.class);
Logout.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(Logout);
return true;
case R.id.action_refresh:
Intent Refresh = new Intent(this,Users.class);
Refresh.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(Refresh);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed (){
moveTaskToBack(true);
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_用户);
usersList=(ListView)findViewById(R.id.usersList);
nouser文本=(TextView)findViewById(R.id.nouser文本);
searchView=(searchView)findviewbyd(R.id.searchView);
pd=新建进度对话框(Users.this);
pd.设置消息(“азззазаза…”);
pd.show();
字符串url=”https://android-messenger-2f255.firebaseio.com/users.json";
StringRequest=newStringRequest(request.Method.GET,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串s){
最终成功;
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
System.out.println(““+截击错误”);
}
});
RequestQueue rQueue=Volley.newRequestQueue(Users.this);
rQueue.add(请求);
usersList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
UserDetails.chatWith=al.get(位置);
startActivity(新意图(Users.this、Chat.class));
}
});
adapter=new ArrayAdapter(这是android.R.layout.simple_list_item_1,al);
setAdapter(适配器);
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
adapter.getFilter().filter(newText);
返回false;
}
});
}
公共void doOnSuccess(字符串s){
试一试{
JSONObject obj=新的JSONObject;
迭代器i=obj.keys();
字符串键=”;
while(i.hasNext()){
key=i.next().toString();
如果(!key.equals(UserDetails.username)){
al.添加(键);
}
totalUsers++;
}
}捕获(JSONException e){
e、 printStackTrace();
}
如果(totalUsers)您可以选中此项,则您必须根据适配器类中由于某种原因未发布在此处的newText
筛选列表。您可以选中此项,您必须根据适配器类中由于某种原因未发布在此处的newText
筛选列表。
<SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:queryHint="Поиск..."
android:layout_marginBottom="10dp"
android:background="@drawable/edittextstyle"
android:id="@+id/searchView" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Пока пользователей нет:("
android:id="@+id/noUsersText"
android:visibility="gone"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/usersList"
android:background="@drawable/edittextstyle"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false" />