journeyang 2020-07-07 22:52 采纳率: 0%
浏览 243

求助。。searchview实现模糊查询

想要加一个searchView搜索框,在搜索框中输入数据会实时更新listview,试了好多次还是没反应。。。代码如下:

package my.AddressList;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import my.AddressList.listViewAdapter.onItemChangesListener;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AliasActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Toast;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Center extends Activity{ 
    private SearchView mSearchView;
    private ListView  mListView;
    private Button btn1;
    private List<Message> messages=new ArrayList();
    private List<String> messagename=new ArrayList<String>();
    listViewAdapter adapter1,adapter2;
    SQLiteDatabase db;
    DataBase dbHelper = new DataBase(this,"StoreMessage",null,2);
           @Override 
           protected void onCreate(Bundle savedInstanceState){ 
               super.onCreate(savedInstanceState); 
               setContentView(R.layout.center); 
               Intent itlogin=super.getIntent();
               Intent itcenter=super.getIntent();
               Intent itbackadd=super.getIntent();
               Intent itcenterM=super.getIntent();
               Intent itmtcen=super.getIntent();
                btn1=(Button)this.findViewById(R.id.add);
                 mSearchView=(SearchView)this.findViewById(R.id.searchView);
                 mListView=(ListView)this.findViewById(R.id.listview);


                        btn1.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                Intent itadd = new Intent(Center.this,addMessage.class);
                                startActivity(itadd);
                            }
                        });

                        db = dbHelper.getWritableDatabase();
                        Cursor cursor = db.query("StoreMessage",null,null,null,null,null,null);
                        if (cursor.moveToFirst()){
                            do{
                                String name = cursor.getString(cursor.getColumnIndex("name"));
                                String phone = cursor.getString(cursor.getColumnIndex("phone"));
                                String relation = cursor.getString(cursor.getColumnIndex("relation"));
                                String fs = cursor.getString(cursor.getColumnIndex("fs")); 
                                String address = cursor.getString(cursor.getColumnIndex("address"));
                                String remarks = cursor.getString(cursor.getColumnIndex("remarks"));
                                Message messagesInfo= new Message(name,phone,relation,fs,address,remarks);
                                messages.add(messagesInfo);//加入到list中
                            }while (cursor.moveToNext());
                        }
                       adapter1=new listViewAdapter(Center.this,R.layout.listview,messages);
                        mListView.setAdapter(adapter1);
                        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                                Message message_check = messages.get(i);
                                String checkName =message_check.getName(),
                                        checkPhone =message_check.getPhone(),
                                        checkRelation =message_check.getRelation(),
                                        checkfs =message_check.getfs(),
                                        checkAddress = message_check.getAddress(),
                                        checkRemarks= message_check.getRemarks();
                                AlertDialog.Builder builder = new AlertDialog.Builder(Center.this);
                                builder.setMessage(
                                        "         姓               名:" + checkName + "\n" +
                                        "         联 系 方 式 :  " + checkPhone + "\n" +
                                        "         关系 :              " + checkRelation + "\n" +
                                        "         公司  /学校     " + checkfs + "\n" + 
                                        "         地               址 :" + checkAddress + "\n" +
                                        "         备               注 :" + checkRemarks + "\n");
                                builder.setTitle("                  查看联系人");
                                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {

                                    }
                                });
                                builder.show();
                            }
                        });
                       mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                            @Override
                            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                                DeleteDialog(i);
                                return true;
                            }
                        });

                 //打电话 
                        adapter1.setOnItemCallClickListener(new listViewAdapter.onItemCallListener() {
                            @Override
                            public void onCallClick(int i) {

                                Message message_check = messages.get(i);
                                String phoneNumber = message_check.getPhone();
                                Intent intent = new Intent();
                                intent.setAction(Intent.ACTION_DIAL);
                                intent.setData(Uri.parse("tel:" + phoneNumber));
                                startActivity(intent);
                            }
                        });
                        //编辑
                        adapter1.setOnItemChangesClickListener(new onItemChangesListener(){
                            @Override
                            public void onChangesClick(int i) {
                                Message message_check =messages.get(i);
                                String checkName =message_check.getName(),
                                        checkPhone = message_check.getPhone(),
                                        checkRelation = message_check.getRelation(),
                                        checkfs= message_check.getfs(),
                                        checkAddress = message_check.getAddress(),
                                        checkRemarks= message_check.getRemarks();
                                Intent itmodify = new Intent(Center.this,Modify.class);
                                itmodify.putExtra("extra_name",checkName);
                                itmodify.putExtra("extra_phone",checkPhone);
                                itmodify.putExtra("extra_relation",checkRelation);
                                itmodify.putExtra("extra_fs",checkfs);
                                itmodify.putExtra("extra_address",checkAddress);
                                itmodify.putExtra("extra_remarks",checkRemarks);
                                itmodify.putExtra("extra_i",i);
                                startActivity(itmodify);
                                Toast.makeText(Center.this,"编辑",Toast.LENGTH_SHORT).show();  }
                        });

                    }
                    private void DeleteDialog(final int positon){
                            AlertDialog.Builder builder = new AlertDialog.Builder(Center.this);
                            builder.setMessage("删除联系人");
                            builder.setTitle("提示");
                            builder.setPositiveButton("删除", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    Message message_check = messages.get(positon);
                                    String checkName = message_check.getName(),
                                            checkPhone = message_check.getPhone(),
                                            checkRelation = message_check.getRelation(),
                                            checkfs= message_check.getfs(),
                                            checkAddress = message_check.getAddress(),
                                            checkRemarks= message_check.getRemarks();
                                    messages.remove(positon);
                                    adapter1.notifyDataSetChanged();  //更新listView
                                    db.delete("StoreMessage","name = ? and phone= ? and relation = ? and fs= ? and address = ? and remarks = ?",
                                            new String[]{checkName,checkPhone,checkRelation,checkfs,checkAddress,checkRemarks});
                                    Toast.makeText(Center.this,"删除成功!",Toast.LENGTH_SHORT).show();
                                }
                            });
                        builder.setNeutralButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {

                            }
                        });
                        builder.show();


                    mListView.setTextFilterEnabled(true);
                    mSearchView.setSubmitButtonEnabled(true);//有搜索框

                    mSearchView.setQueryHint("搜索");
                    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){

                        @Override
                        public boolean onQueryTextChange(String newText) {
                            return false;
                                    // TODO Auto-generated method stub  

                        }
                        @Override
                        public boolean onQueryTextSubmit(String query) {
                            // TODO Auto-generated method stub
                          Toast.makeText(Center.this,"您的选择是:"+query,Toast.LENGTH_SHORT).show();
                            return false;
                        }

                     });
                }    
           } 
  • 写回答

1条回答 默认 最新

  • 简单吗 2020-07-08 10:21
    关注

    你这个搜索框的监听方法是不是写道了 dialog方法里了,看上去好像是,你写到oncreate里

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器