Android 从sqlite listview按名称搜索

Android 从sqlite listview按名称搜索,android,sqlite,listview,Android,Sqlite,Listview,我已经从数据库中填充了listview。我想要的是搜索过滤器,即当用户输入字母时,搜索用户输入的所有名称。我已经浏览了很多网站,但没有找到任何解决办法。我是android开发新手,请帮助我解决这个问题。我已尝试此代码,但应用程序正在退出。我不知道代码出了什么问题 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:

我已经从数据库中填充了listview。我想要的是搜索过滤器,即当用户输入字母时,搜索用户输入的所有名称。我已经浏览了很多网站,但没有找到任何解决办法。我是android开发新手,请帮助我解决这个问题。我已尝试此代码,但应用程序正在退出。我不知道代码出了什么问题

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <!-- Editext for Search -->
    <EditText android:id="@+id/inputSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Search Choultry."
        android:inputType="text"/>

    <ListView
        android:id="@+id/listViewshowall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/inputSearch">

    </ListView>

</RelativeLayout>

MainActivity.java
package com.naman.namrathasrinivas.choultriesbangalore;

import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

import java.io.IOException;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private DatabaseHandler  databaseHandler;

    private SQLiteDatabase db;
    private ListView listview;
    EditText inputSearch;

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

        try {
            databaseHandler = new DatabaseHandler(MainActivity.this);
            databaseHandler.createdatabase();

        } catch (IOException ioe) {
            throw new Error("Unable to create database");
        }
        try {
            databaseHandler.opendatabase();
        } catch (SQLException sqle) {
            throw sqle;
        }


        listview=(ListView)findViewById(R.id.listViewshowall);



        // TODO Auto-generated method stub


        ArrayList<StudentEntity> list=databaseHandler.Getvalue(this.toString());
        ListViewAdapter adapter=new ListViewAdapter(MainActivity.this, list);
        listview.setAdapter(adapter);



        inputSearch = (EditText) findViewById(R.id.inputSearch);


        inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
               // MainActivity.this.adapter.getFilter().filter(cs);

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

                ArrayList<StudentEntity> listentity = new ArrayList<StudentEntity>();

                String selectQuery = "SELECT * FROM hall where name like 'b%' ";

                Cursor cursor = db.rawQuery(selectQuery, null);


                if (cursor.moveToFirst()) {
                    do {
                        StudentEntity sentity = new StudentEntity();
                        sentity.setName(cursor.getString(1));
                        sentity.setLocality(cursor.getString(12));


                        listentity.add(sentity);
                    } while (cursor.moveToNext());
                }

                // return contact list
              //  return listentity;


            }
        });
    }



}

您在日志cat中遇到了什么错误?用问题贴出错误。此外,查询应该是SELECT*FROM HOLL WHERE name,如“%b%”,其中b应该替换为edittext中的文本。我没有收到任何错误。但过滤器并没有发生。你们在问题中说应用程序正在退出,所以logcat中一定有错误。。检查日志是否有错误。