2017-11-10 3 views
0

を解決できません。しかし、私はこの機能を実装してみてください。私はそれがクラス内の別の関数なので、何が問題を作り出しているのか理解していません。 RecyclerAdapterでSearchViewを使用するためにこれを実装しています。私は他のコードを見ましたが、すべて同じタイプで実装されています。 これはfull codeです。それは同じエラーを示している方法れるgetFilter()メソッド

class ProductsRecyclerAdapter extends RecyclerView.Adapter<ProductsRecyclerAdapter.MyViewHolder> implements Filterable { 

    List<ProductEntity> productList = Collections.emptyList(); 
    Context context; 
    List<ProductEntity> filteredProductList = Collections.emptyList(); 

    public ProductsRecyclerAdapter(List<ProductEntity> productList, Context context) { 
     this.productList = productList; 
     this.context = context; 
     filteredProductList = productList; 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 

     TextView product_name; 
     ImageView product_image; 
     CardView product_catalog_card; 
     AVLoadingIndicatorView progress_ball_image ; 

     public MyViewHolder(View view) { 
      super(view); 
      product_name = view.findViewById(R.id.product_name); 
      product_image = view.findViewById(R.id.product_image); 
      product_catalog_card = view.findViewById(R.id.product_catalog_card); 
      progress_ball_image = view.findViewById(R.id.progress_ball_image) ; 
     } 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_entity_design, parent, false); 
     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(final MyViewHolder holder, final int position) { 
     holder.product_name.setText(productList.get(position).about); 
     holder.progress_ball_image.setVisibility(View.VISIBLE) ; 
     Picasso.with(context) 
       .load(productList.get(position).image.get(0).url) 
       .centerInside() 
       .resize(200, 200) 
       .memoryPolicy(MemoryPolicy.NO_STORE) 
       .into(holder.product_image, new Callback() { 
        @Override 
        public void onSuccess() { 
         holder.progress_ball_image.smoothToHide(); ; 
        } 

        @Override 
        public void onError() { 

        } 
       }); 
     holder.product_catalog_card.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(v.getContext(), ProductDetail.class); 
       intent.putExtra("product", productList.get(position)); 
       v.getContext().startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return productList.size(); 
    } 

    @Override 
    public Filter getFilter() { 
     return new Filter() { 
      @Override 
      protected FilterResults performFiltering(CharSequence charSequence) { 
       String charString = charSequence.toString(); 
       if (charString.isEmpty()) { 
        filteredProductList = productList; 
       } else { 
        ArrayList<ProductEntity> filteredList = new ArrayList<>(); 
        for (ProductEntity productEntity : productList) { 
         if (productEntity.about.toLowerCase().contains(charString)) { 
          filteredList.add(productEntity); 
         } 
        } 
        filteredProductList = filteredList; 
       } 

       FilterResults filterResults = new FilterResults(); 
       filterResults.values = filteredProductList; 
       return filterResults; 
      } 

      @Override 
      protected void publishResults(CharSequence charSequence, FilterResults filterResults) { 
       filteredProductList = (ArrayList<ProductEntity>) filterResults.values; 
       notifyDataSetChanged(); 
      } 
     }; 
    } 
} 

This is the error snapshot

+0

に動作します。同じパッケージ内でこのアダプタを使用しようとしていますか? – Kulebin

+0

はい、それは問題を提起しますか?私はoyが見たいと思えば上のリンクの私の全体を掲示した。私は別のクラスを作成してチェックアウトしましたが、それは役に立たない。 –

答えて

1

ラウール・ミシュラ、見て、あなたはRecyclerView.Adapterとして、あなたの変数を宣言していますがProductsRecyclerAdapterを必要としています。あなたの変数の型を変更し、それは私があなたのProductsRecyclerAdapterクラスはパッケージの可視性を持って見ることができます

+0

このような愚かな間違い。そして私はそのような時間の間、それをうろついている。あなたの助けに感謝します。 –

関連する問題