2016-02-10 51 views
0

我正在使用imageview和textview的自定義列表視圖在imageview.I已完成以下代碼進行過濾的項目。使用ImageView不自動搜索自定義ListView圖像

主要片段:

CategoriesAdapter adapter; 
edt_SearchBar.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       adapter.getFilter().filter(s); 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

的CategoriesAdapter類:

public class CategoriesAdapter extends BaseAdapter { 
    List<CategoryDataModel> category_list,category_filter_list; 
    Context context; 
    LayoutInflater inflater; 
    ImageLoader imageLoader; 
    ViewHolder vh; 
    ValueFilter filter; 
    int counter=0; 
    String[] images_array; 

    public CategoriesAdapter(List<CategoryDataModel> category_list, Context context) { 
     this.category_list=category_list; 
     this.category_filter_list=category_list; 
     this.context=context; 
     inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     imageLoader= AppController.getInstance().getImageLoader(); 
     images_array=new String[]{"kochi_cinepolis.png","kochi_padma.png"}; 
    } 

    @Override 
    public int getCount() { 
     return category_list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return category_list.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if(convertView==null) 
     { 
      convertView=inflater.inflate(R.layout.category_view_style, null); 
      vh=new ViewHolder(); 
      if (imageLoader == null) 
       imageLoader = AppController.getInstance().getImageLoader(); 
      vh.imageView = (NetworkImageView) convertView .findViewById(R.id.imageView_grid); 
      vh.categoryName= (TextView) convertView.findViewById(R.id.tvcategory); 
      convertView.setTag(vh); 
     } 
     else 
     { 
      vh=(ViewHolder) convertView.getTag(); 
     } 



     vh.imageView.setImageUrl(AppConstant.IMAGE_FOLDER +images_array[position], imageLoader); 

     vh.imageView.setDefaultImageResId(R.drawable.default_category_loading); 

     vh.categoryName.setText(category_list.get(position).getCategory_name().toUpperCase()); 

     return convertView; 
    } 
    public class ViewHolder 
    { 
     NetworkImageView imageView; 
     TextView categoryName; 
    } 
    public ValueFilter getFilter() { 
     if(filter==null) { 

      filter=new ValueFilter(); 
     } 

     return filter; 
    } 

    public class ValueFilter extends Filter { 

     @Override 
     protected FilterResults performFiltering(CharSequence constraint) { 

      FilterResults results=new FilterResults(); 
      if(constraint!=null && constraint.length()>0){ 
       String cons_value=constraint.toString(); 

       List<CategoryDataModel> filterList=new ArrayList<>(); 

       for(int i=0;i<category_filter_list.size();i++){ 

        if(category_filter_list.get(i).getCategory_name().toLowerCase().contains(cons_value.toLowerCase())) { 

         filterList.add(category_filter_list.get(i)); 

        } 
       } 


       results.count=filterList.size(); 

       results.values=filterList; 

      }else{ 

       results.count=category_filter_list.size(); 

       results.values=category_filter_list; 

      } 

      return results; 
     } 

     @Override 
     protected void publishResults(CharSequence constraint, FilterResults results) { 
      category_list=(List<CategoryDataModel>) results.values; 
      notifyDataSetChanged(); 

     } 
    } 
} 

問題是following.Now我在listview.I兩個項目正在基礎上,搜索列表視圖textview.text中的文本。但是當返回搜索結果時,錯誤地顯示了listview行的相應圖像。第一行的圖像是顯示的內容而不是正確的行。請儘早提供幫助。

回答

0

您的適配器需要實現Filterable接口,它必須實現getFilter(),並且需要在自定義適配器中重寫getFilter()並相應地過濾數據源,並通知listview數據集已更改。

+0

我嘗試實現Filterable接口並使用overriden getFilter()方法。問題仍然存在。 – jojo

+0

我解決了這個問題。設置文本和設置圖像的列表應該與已過濾的列表相同。我不能使用單獨的圖像列表。 – jojo

相關問題