searchview搜索不到listview内容

wangxiaofeiwuqiao 2016-09-23 11:18:47
根据搜索内容显示相关结果,运行了没有没有效果,比如我输入111,应该只显示111这个名称的,但是其他都一起显示了。
java源码如下,哪位大神帮看看:

package tw.a05.com.flag.ch15_addresslist;

import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.TextView;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, android.widget.SearchView.OnQueryTextListener{

private String str;
private String year;
private String month;
private String day;
static final String db_name="AddressDB";
static final String tb_name="Address";
static final String[] From=new String[]{"name"};
static final String[] From1=new String[]{"name","phone","telephone","address","updatetime"};
TextView tv;
EditText et;
SQLiteDatabase db;
Cursor cur;
SimpleCursorAdapter adapter;
ListView lv;
SearchView srv;
Calendar c=Calendar.getInstance();
int num=0;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

year = Integer.toString(c.get(Calendar.YEAR));
month = Integer.toString(c.get(Calendar.MONTH));
day = Integer.toString(c.get(Calendar.DAY_OF_MONTH));
str = year + "-" + month + "-" + day;
et = (EditText) findViewById(R.id.etName);
lv = (ListView) findViewById(R.id.lv);
srv = (SearchView) findViewById(R.id.srv);

db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE, null);
String createtable = "create table if not exists " + tb_name +
"(_id Integer primary key autoincrement, " +
"name varchar(32), " +
"phone varchar(32), " +
"telephone varchar(32), " +
"address varchar(120), " +
"updatetime varchar(120))";
db.execSQL(createtable);
cur = db.rawQuery("select _id,name from " + tb_name, null);

if (cur.getCount() == 0) {
addData("张三", "13855556675", "06-23562525", "中国台北市", str.toString());
addData("陈刚", "13755556685", "01-23562525", "中国高雄市", str.toString());
addData("何杰", "13655556696", "04-23562525", "中国淡水市", str.toString());
addData("王强", "13555556634", "07-23562525", "中国台南市", str.toString());
addData("李丽", "13855556622", "08-23562525", "中国台中市", str.toString());
addData("林芳", "13855556656", "03-23562525", "中国台东市", str.toString());
}
//adapter=new SimpleCursorAdapter(this,R.layout.item,cur,From1,new int[]{R.id.etName,R.id.etPhone,R.id.etTelephone,R.id.etAddress,R.id.etUpdatetime},0);
adapter = new SimpleCursorAdapter(this, R.layout.item, cur, From, new int[]{R.id.etName}, 0);
lv.setAdapter(adapter);

lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(this);
srv.setOnQueryTextListener(this);
requery();
//-----------------------//

}

private void addData(String name,String phone,String telephone,String address,String datetime)
{
ContentValues cv=new ContentValues(5);
cv.put(From1[0],name);
cv.put(From1[1],phone);
cv.put(From1[2],telephone);
cv.put(From1[3],address);
cv.put(From1[4],datetime);
db.insert(tb_name,null,cv);
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
String name=null;
cur.moveToPosition(position);
num=Integer.parseInt(cur.getString(cur.getColumnIndex("_id")).toString());
name=cur.getString(cur.getColumnIndex("name"));
Intent it=new Intent(this,List.class);
it.putExtra("id",num);
it.putExtra("name",name);
startActivity(it);
}

private void requery()
{
cur=db.rawQuery("select _id,name,phone,telephone,address,updatetime from "+tb_name,null);
adapter.changeCursor(cur);
adapter.notifyDataSetChanged();
//txName.setText(cur.getString(cur.getColumnIndex("name")).toString());
//txPhone.setText(cur.getString(cur.getColumnIndex("phone")).toString());
//txAddress.setText(cur.getString(cur.getColumnIndex("address")).toString());
}

@Override
public boolean onQueryTextSubmit(String query) {
return false;
}

@Override
public boolean onQueryTextChange(String newText)
{
// TODO Auto-generated method stub
// Toast.makeText(MainActivity.this, "1111", Toast.LENGTH_LONG).show();
if(newText.length()!=0)
{
lv.setFilterText(newText);
}
else
{
lv.clearTextFilter();
}
adapter.notifyDataSetChanged();
return false;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}


}
...全文
218 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicyang1234 2016-09-23
  • 打赏
  • 举报
回复
LISTVIEW的setFilterText不一定适配SimpleCursorAdapter。 建议自己写ADAPTER,适配内容。
wangxiaofeiwuqiao 2016-09-23
  • 打赏
  • 举报
回复
哪位大神帮看看?弄了好久不知道问题在哪

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧