Android 使用Actionbar SearchView从listview中的sqlite中筛选具有四个Arraylist的自定义适配器

Android 使用Actionbar SearchView从listview中的sqlite中筛选具有四个Arraylist的自定义适配器,android,Android,我有ListView和自定义Arrayadapter。我想实现操作栏searchview来搜索从Sqlite获取的列表项。如果我从列表项中搜索,它只显示第一个项(该项甚至没有搜索),搜索的项消失 我试过这个代码,但什么也没发生。这是我的搜索视图的代码。我想按标题列表搜索 SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchView = (Se

我有ListView和自定义Arrayadapter。我想实现操作栏searchview来搜索从Sqlite获取的列表项。如果我从列表项中搜索,它只显示第一个项(该项甚至没有搜索),搜索的项消失

我试过这个代码,但什么也没发生。这是我的搜索视图的代码。我想按标题列表搜索

 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;
}
}