Android 使用Actionbar SearchView从listview中的sqlite中筛选具有四个Arraylist的自定义适配器
我有ListView和自定义Arrayadapter。我想实现操作栏searchview来搜索从Sqlite获取的列表项。如果我从列表项中搜索,它只显示第一个项(该项甚至没有搜索),搜索的项消失 我试过这个代码,但什么也没发生。这是我的搜索视图的代码。我想按标题列表搜索Android 使用Actionbar SearchView从listview中的sqlite中筛选具有四个Arraylist的自定义适配器,android,Android,我有ListView和自定义Arrayadapter。我想实现操作栏searchview来搜索从Sqlite获取的列表项。如果我从列表项中搜索,它只显示第一个项(该项甚至没有搜索),搜索的项消失 我试过这个代码,但什么也没发生。这是我的搜索视图的代码。我想按标题列表搜索 SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchView = (Se
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.search_view).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// searchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextChange(String newText)
{
// this is your adapter that will be filtered
adapter.getFilter().filter(newText);
System.out.println("on text chnge text: "+newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query)
{
// this is your adapter that will be filtered
adapter.getFilter().filter(query);
System.out.println("on query submit: "+query);
return true;
}
};
searchView.setOnQueryTextListener(textChangeListener);
这是我自定义适配器的代码
public class CustomeAdapter extends ArrayAdapter<String> {
public Context context;
public ArrayList<String> titleArrayList, descArrayList, timeArrayList, imgArrayList, IdArrayList;
List data;
int layoutResID;
private Bitmap myBitmap;
public CustomeAdapter(Context context, int layoutResourceId, ArrayList<String> titleArrayList, ArrayList<String> descArrayList, ArrayList<String> timeArrayList, ArrayList<String> imgArrayList, ArrayList<String> IdArrayList) {
super(context, layoutResourceId, titleArrayList);
this.context = context;
this.titleArrayList = titleArrayList;
this.descArrayList = descArrayList;
this.timeArrayList = timeArrayList;
this.imgArrayList = imgArrayList;
this.IdArrayList = IdArrayList;
this.data = data;
this.layoutResID = layoutResourceId;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View rowView = convertView;
final backAndFrontView sqView;
if (rowView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
rowView = inflater.inflate(layoutResID, parent, false);
sqView = new backAndFrontView();
sqView.tag = (TextView) rowView.findViewById(R.id.tv_fullnote);
sqView.desc = (TextView) rowView.findViewById(R.id.tv_title);
sqView.time = (TextView) rowView.findViewById(R.id.tv_time);
sqView.id = (TextView) rowView.findViewById(R.id.id);
sqView.img = (ImageView) rowView.findViewById(R.id.imageView3);
sqView.button1 = (ImageView) rowView.findViewById(R.id.swipe_button1);
sqView.button2 = (ImageView) rowView.findViewById(R.id.swipe_button2);
sqView.button3 = (ImageView) rowView.findViewById(R.id.swipe_button3);
sqView.button4 = (ImageView) rowView.findViewById(R.id.swipe_button4);
rowView.setTag(sqView);
} else {
sqView = (backAndFrontView) rowView.getTag();
}
try {
sqView.tag.setText(titleArrayList.get(position));
sqView.desc.setText(descArrayList.get(position));
sqView.time.setText(timeArrayList.get(position));
sqView.id.setText(IdArrayList.get(position));
sqView.id.setTag(IdArrayList.get(position).toString());
if (imgArrayList.get(position).contains("null")) {
sqView.img.setImageBitmap(null);
sqView.img.setTag("null");
sqView.img.setVisibility(View.INVISIBLE);
} else {
sqView.img.setVisibility(View.VISIBLE);
BitmapFactory.Options bounds = new BitmapFactory.Options();
bounds.inSampleSize = 2;
myBitmap = BitmapFactory.decodeFile(imgArrayList.get(position), bounds);
//sqView.img.setImageBitmap((position & 1) == 1 ? myBitmap : myBitmap);
String TAG = "tag";
String id = String.valueOf(position);
sqView.img.setTag(imgArrayList.get(position).toString());
int width = myBitmap.getWidth();
int height = myBitmap.getHeight();
int newWidth = (height > width) ? width : height;
int newHeight = (height > width) ? height - (height - width) : height;
int crop = (width - height) / 2;
crop = (crop < 0) ? 0 : crop;
Bitmap cropImg = Bitmap.createBitmap(myBitmap, crop, 0, newWidth, newHeight);
sqView.img.setImageBitmap(cropImg);
}
} catch (Exception e) {
System.out.print(e.toString());
}
sqView.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Toast.makeText(context, "Button 1 Clicked", Toast.LENGTH_SHORT).show();
}
});
sqView.button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "Button 2 Clicked", Toast.LENGTH_SHORT).show();
}
});
sqView.button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "Button 3 Clicked", Toast.LENGTH_SHORT).show();
}
});
sqView.button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "Button 4 Clicked", Toast.LENGTH_SHORT).show();
}
});
return rowView;
}
protected static class backAndFrontView {
protected TextView tag;
protected TextView desc;
protected TextView time;
protected ImageView img;
protected ImageView button1;
protected ImageView button2;
protected ImageView button3;
protected ImageView button4;
public TextView id;
}
公共类CustomeApter扩展了ArrayAdapter{
公共语境;
公共阵列列表标题阵列列表、描述阵列列表、时间阵列列表、imgArrayList、IdArrayList;
列出数据;
int layoutResID;
私有位图;
公共CustomeApter(上下文上下文、内部布局资源ID、ArrayList标题列表、ArrayList描述列表、ArrayList时间ArrayList、ArrayList imgArrayList、ArrayList IdArrayList){
超级(上下文、布局资源ID、标题列表);
this.context=上下文;
this.titleArrayList=titleArrayList;
this.descArrayList=descArrayList;
this.timeArrayList=timeArrayList;
this.imgArrayList=imgArrayList;
this.IdArrayList=IdArrayList;
这个数据=数据;
this.layoutResID=layoutResourceId;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图行视图=转换视图;
最终后视图和前视图;
if(rowView==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
rowView=充气机。充气(layoutResID,父级,false);
sqView=新的backAndFrontView();
sqView.tag=(TextView)rowView.findViewById(R.id.tv_fullnote);
sqView.desc=(TextView)rowView.findViewById(R.id.tv_title);
sqView.time=(TextView)rowView.findViewById(R.id.tv_time);
sqView.id=(TextView)rowView.findViewById(R.id.id);
sqView.img=(ImageView)rowView.findViewById(R.id.imageView3);
sqView.button1=(ImageView)rowView.findViewById(R.id.swipe_button1);
sqView.button2=(ImageView)rowView.findViewById(R.id.swipe_button2);
sqView.button3=(ImageView)rowView.findViewById(R.id.swipe_button3);
sqView.button4=(ImageView)rowView.findViewById(R.id.swipe_button4);
setTag(sqView);
}否则{
sqView=(backAndFrontView)rowView.getTag();
}
试一试{
sqView.tag.setText(titleArrayList.get(position));
sqView.desc.setText(descArrayList.get(position));
sqView.time.setText(timeArrayList.get(position));
sqView.id.setText(IdArrayList.get(position));
sqView.id.setTag(IdArrayList.get(position.toString());
if(imgArrayList.get(position.contains)(“null”)){
sqView.img.setImageBitmap(null);
sqView.img.setTag(“null”);
sqView.img.setVisibility(View.INVISIBLE);
}否则{
sqView.img.setVisibility(View.VISIBLE);
BitmapFactory.Options bounds=新的BitmapFactory.Options();
bounds.inSampleSize=2;
myBitmap=BitmapFactory.decodeFile(imgArrayList.get(位置),边界);
//sqView.img.setImageBitmap((位置&1)==1?myBitmap:myBitmap);
String TAG=“TAG”;
字符串id=String.valueOf(位置);
sqView.img.setTag(imgArrayList.get(position.toString());
int width=myBitmap.getWidth();
int height=myBitmap.getHeight();
int newWidth=(高度>宽度)?宽度:高度;
int newHeight=(高度>宽度)?高度-(高度-宽度):高度;
整数裁剪=(宽度-高度)/2;
作物=(作物<0)?0:作物;
位图cropImg=Bitmap.createBitmap(myBitmap,裁剪,0,newWidth,newHeight);
sqView.img.setImageBitmap(cropImg);
}
}捕获(例外e){
System.out.print(例如toString());
}
sqView.button1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
//Toast.makeText(上下文,“单击按钮1”,Toast.LENGTH_SHORT.show();
}
});
sqView.button2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(上下文,“单击按钮2”,Toast.LENGTH_SHORT.show();
}
});
sqView.button3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(上下文,“单击按钮3”,Toast.LENGTH_SHORT.show();
}
});
sqView.button4.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(上下文,“单击按钮4”,Toast.LENGTH_SHORT.show();
}
});
返回行视图;
}
受保护的静态类backAndFrontView{
受保护的文本视图标签;
受保护的文本视图描述;
受保护的文本查看时间;
受保护图像视图img;
受保护的图像视图按钮1;
受保护的图像视图按钮2;
受保护的图像视图按钮3;
受保护的图像视图按钮4;
公共文本视图id;
}
}