0

这里是图像的Andorid回收站查看与列表相互重叠

enter image description here

请让我更了解更多信息

public class ProductFragment extends Fragment implements SearchView.OnQueryTextListener,ProductAdaptor.ProductAdapterListener { 
private static final String TAG = ProductFragment.class.getSimpleName(); 
/** The default socket timeout in milliseconds */ 
public static final int DEFAULT_TIMEOUT_MS = 2500; 

/** The default number of retries */ 
public static final int DEFAULT_MAX_RETRIES = 1; 

/** The default backoff multiplier */ 
public static final float DEFAULT_BACKOFF_MULT = 1f; 
private ProductAdaptor adapter; 
private RecyclerView recyclerView; 
private RequestQueue requestQueue; 
private VolleySingleton volleySingleton; 
// To store all the products 
private static List<ProductInfo> productsList=new ArrayList<>(); 
ProductAdaptor.ProductAdapterListener listener; 
//Progress dialog 
private ProgressDialog pDialog; 

public static ProductFragment newInstance() { 
    return new ProductFragment(); 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    pDialog = new ProgressDialog(getActivity()); 
    pDialog.setCancelable(false); 
    listener=this; 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View layout=inflater.inflate(R.layout.product_fragment,container,false); 
    recyclerView= (RecyclerView) layout.findViewById(R.id.productList); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    pDialog.setMessage("Fetching products..."); 
    showpDialog(); 
    volleySingleton=VolleySingleton.getInstance(); 
    requestQueue=volleySingleton.getRequestQueue(); 
    JsonObjectRequest jsObjRequest = new JsonObjectRequest 
      (Request.Method.GET, AppConfig.URL_PRODUCTS, (String) null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        //hide the progress dialog 
        hidepDialog(); 
        adapter=new ProductAdaptor(getActivity(),parseJSONOResponse(response),listener); 
        recyclerView.setAdapter(adapter); 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 

        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
        Toast.makeText(MyApplication.getAppContext(), 
          error.getMessage(), Toast.LENGTH_SHORT).show(); 
        // hide the progress dialog 
        hidepDialog(); 

       } 
      }); 
    // Wait 20 seconds and don't retry more than once 

    jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(
      DEFAULT_TIMEOUT_MS, 
      DEFAULT_MAX_RETRIES, 
      DEFAULT_BACKOFF_MULT)); 

    requestQueue.add(jsObjRequest); 



    return layout; 
} 


@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    setHasOptionsMenu(true); 



} 
public boolean PerformSearch(String searchString){ 

    //adapter.getFilter().filter(searchString); 
    return true; 

} 

public void setDataSet(List<ProductInfo> newDataSet){ 
    productsList = newDataSet; 
    adapter=new ProductAdaptor(MyApplication.getAppContext(),productsList,this); 
    recyclerView.swapAdapter(adapter, false); 
    //new way of filtering data 

} 

private List<ProductInfo> parseJSONOResponse(JSONObject response){ 
    try { 

     JSONArray products = response.getJSONArray("products"); 
     for (int i = 0; i < products.length(); i++) { 

      JSONObject product = (JSONObject) products 
        .get(i); 

      String id = product.getString("product_id"); 
      String name = product.getString("name"); 
      String description = product 
        .getString("description"); 
      String image = AppConfig.URL_IMAGE_PRODUCTS + product.getString("image"); 
      BigDecimal price = new BigDecimal(product 
        .getString("price")); 

      ProductInfo p = new ProductInfo(id, name, description, 
        image, price); 

      productsList.add(p); 

     } 
     return productsList; 
    } catch (JSONException e) { 

     e.printStackTrace(); 
     Toast.makeText(getActivity(), 
       "Error: " + e.getMessage(), 
       Toast.LENGTH_LONG).show(); 
    } 
    return productsList; 

} 
@Override 
public void onAddToCartPressed(ProductInfo product) { 
    CartHandler cartHandler=new CartHandler(MyApplication.getAppContext()); 

    if (cartHandler.getProductsInCartCount()==0) { 
     cartHandler.addProductInCart(product); 
     Toast.makeText(MyApplication.getAppContext(), 
       product.getName() + " added to cart!", Toast.LENGTH_SHORT).show(); 

    } 
    else{ 
     ProductInfo temp=cartHandler.getProductInCart(Integer.parseInt(product.getId())); 
     if (temp!=null){ 

      cartHandler.updateProduct(product); 
      Toast.makeText(MyApplication.getAppContext(), 
        product.getName() + " added to cart!", Toast.LENGTH_SHORT).show(); 
     }else 
     { 

      cartHandler.addProductInCart(product); 
        Toast.makeText(MyApplication.getAppContext(), 
        product.getName() + " added to cart!", Toast.LENGTH_SHORT).show(); 
     } 
    } 


} 
private void showpDialog() { 
    if (!pDialog.isShowing()){ 
     pDialog.show(); 
    } 
} 

private void hidepDialog() { 
    if (pDialog.isShowing()) 
     pDialog.dismiss(); 
} 


@Override 
public boolean onQueryTextSubmit(String query) { 

    return false; 
} 

@Override 
public boolean onQueryTextChange(String query) { 
    // final List<ProductInfo> filteredModelList = filter(productsList, query); 
    // adapter.animateTo(filteredModelList); 
    //recyclerView.scrollToPosition(0); 
    return true; 
} 

private List<ProductInfo> filter(List<ProductInfo> models, String query) { 
    query = query.toLowerCase(); 

    final List<ProductInfo> filteredModelList = new ArrayList<>(); 
    for (ProductInfo model : models) { 
     final String text = model.getName().toLowerCase(); 
     if (text.contains(query)) { 
      filteredModelList.add(model); 
     } 
    } 
    return filteredModelList; 
} 

}

产品适配器

public class ProductAdaptor extends RecyclerView.Adapter<ProductAdaptor.ProductViewHolder>{ 
    //implements Filterable { 

private final LayoutInflater inflator; 
private final List<ProductInfo> products; 
private Context context; 
private ProductAdapterListener listener; 
ImageLoader imageLoader = VolleySingleton.getInstance().getImageLoader(); 
//private List<ProductInfo> BackupProducts= Collections.emptyList(); 
ProductInfo current; 

public ProductAdaptor(Context context, List<ProductInfo> data, ProductAdapterListener listener){ 
    inflator= LayoutInflater.from(context); 
    products=data; 
    this.context=context; 
    this.listener=listener; 
    //BackupProducts=data; 
} 

@Override 
public ProductAdaptor.ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view=inflator.inflate(R.layout.custom_product, parent, false); 
    ProductViewHolder holder=new ProductViewHolder(view); 

    return holder; 
} 

@Override 
public void onBindViewHolder(final ProductAdaptor.ProductViewHolder holder, final int position) { 
    current=products.get(position); 
    holder.title.setText(current.getName()); 
    holder.icon.setImageUrl(current.getImage(), imageLoader); 
    holder.price.setText("Price: Rs. " + current.getPrice()); 
    holder.description.setText(current.getDescription()); 
    holder.add_Cart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      products.get(position).setQuantity(Integer.parseInt(holder.etQuantity.getText().toString())); 
      listener.onAddToCartPressed(products.get(position)); 
     } 
    }); 
    holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("Reading Position", "" + current.getId()); 
      Intent base=new Intent(context, Products.class); 
      base.putExtra("product_id", Integer.parseInt(products.get(position).getId())); 
      base.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
      context.startActivity(base); 
     } 
    }); 

} 
public void setData(List<ProductInfo> list){ 
    products.clear(); 
    products.addAll(list); 
    notifyDataSetChanged(); 
} 
/* 
public void flushFilter(){ 
    products.clear(); 
    products.addAll(BackupProducts); 
    notifyDataSetChanged(); 
}*/ 

public void animateTo(List<ProductInfo> models) { 
    applyAndAnimateRemovals(models); 
    applyAndAnimateAdditions(models); 
    applyAndAnimateMovedItems(models); 
} 

private void applyAndAnimateRemovals(List<ProductInfo> newModels) { 
    for (int i = products.size() - 1; i >= 0; i--) { 
     final ProductInfo model = products.get(i); 
     if (!newModels.contains(model)) { 
      removeItem(i); 
     } 
    } 
} 

private void applyAndAnimateAdditions(List<ProductInfo> newModels) { 
    for (int i = 0, count = newModels.size(); i < count; i++) { 
     final ProductInfo model = newModels.get(i); 
     if (!products.contains(model)) { 
      addItem(i, model); 
     } 
    } 
} 

private void applyAndAnimateMovedItems(List<ProductInfo> newModels) { 
    for (int toPosition = newModels.size() - 1; toPosition >= 0; toPosition--) { 
     final ProductInfo model = newModels.get(toPosition); 
     final int fromPosition = products.indexOf(model); 
     if (fromPosition >= 0 && fromPosition != toPosition) { 
      moveItem(fromPosition, toPosition); 
     } 
    } 
} 

public ProductInfo removeItem(int position) { 
    final ProductInfo model = products.remove(position); 
    notifyItemRemoved(position); 
    return model; 
} 

public void addItem(int position, ProductInfo model) { 
    products.add(position, model); 
    notifyItemInserted(position); 
} 

public void moveItem(int fromPosition, int toPosition) { 
    final ProductInfo model = products.remove(fromPosition); 
    products.add(toPosition, model); 
    notifyItemMoved(fromPosition, toPosition); 
} 


@Override 
public int getItemCount() { 
    return products.size(); 
} 
/* 
@Override 
public Filter getFilter() { 
    //flushFilter(); 
    return new CardFilter(this,BackupProducts); 
} 
*/ 


public interface ProductAdapterListener { 
    void onAddToCartPressed(ProductInfo product); 
} 


class ProductViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 
    TextView title; 
    NetworkImageView icon; 
    TextView price; 
    TextView description; 
    LinearLayout add_Cart; 
    TextView etQuantity; 

    public ProductViewHolder(final View itemView) { 

     super(itemView); 

     icon =(NetworkImageView) itemView.findViewById(R.id.productImage); 
     title = (TextView) itemView.findViewById(R.id.productName); 
     price= (TextView) itemView.findViewById(R.id.productPrice); 
     description=(TextView) itemView.findViewById(R.id.productDescription); 
     add_Cart= (LinearLayout) itemView.findViewById(R.id.add_cart); 
     etQuantity= (TextView) itemView.findViewById(R.id.quanity); 

    } 

    @Override 
    public void onClick(View v) { 

    } 
} 

这些都是类的这种产品的列表,请,如果您需要了解更多信息请评论

在此先感谢

有两类,并采取相关产品的json并指定为浏览架

+0

显示适配器和回收初始化 –

+0

表现出一定的代码请 –

+0

显示代码;没有它,我们只能猜测! – AnswerDroid

回答

1

此问题是因为重叠片段的引起和我象这样启动

fragment=ProductFragment.newInstance(); 
      getSupportFragmentManager().beginTransaction() 
        .replace(R.id.productFragment,fragment) 
        .commit(); 

片段所以简单

fragment=ProductFragment.newInstance(); 

解决了我的问题。

谢谢你们的帮助@MohammadAllam