1

ich benutzerdefinierte Elemente recyclerView.In haben lange auf Ich würde einige Ansichten zu verstecken und eine andere Ansicht zeigen (ausblenden imageviews und zeigen checkboxs) Hier ist ein Ausschnitt meiner Code desLegen Sie nicht mehr richtig in RecyclerView Arbeits

 @Override 
     public void onLongClickListener(String type, final int pos) { 
      if (serverStatus == 4) { 
       for (int i = 0; i < recyclerView.getChildCount(); i++) { 
        View view = recyclerView.getChildAt(i); 
        if (view == null) { 
         return; 
        } 
        final CircleImageView circleImageView = view.findViewById(R.id.circle_image); 
        final LetterImageView letterImageView = view.findViewById(R.id.iv_avatar); 
        final AppCompatCheckBox appCompatCheckBox = view.findViewById(R.id.checkbox); 

        letterImageView.setVisibility(View.GONE); 
        circleImageView.setVisibility(View.GONE); 
        final int finalI = i; 

        if (i == pos) { 
         appCompatCheckBox.setChecked(true); 
         currenctAmount = currenctAmount + Double.parseDouble(recyclerAdapter.getItem(finalI).getPrice()); 
         ((DashboardActivity) getActivity()).showFourTabHeader(currenctAmount + ""); 

         ((DashboardActivity) getActivity()).hideBottomBar(); 

        } 

        appCompatCheckBox.setVisibility(View.VISIBLE); 
       } 
      } 

     } 

Alles funktioniert perfekt, aber ich habe ein anderes Problem.Ich werde versuchen, mein Problem zu erklären In meinem RecyclerView verwende ich laden mehr Spezifikation.Wenn mehr Aktion geladen implementiert alle meine Checkbox hat versteckt und RecyclerView hat vorherigen Stil. (Alle meine Checkbox sind versteckt) .Hier ist eine meine Last mehr Funktion

if (recyclerAdapter != null) { 
     recyclerAdapter.setmOnLoadMoreListener(new RecyclerAdapter.OnLoadMoreListener() { 
      @RequiresApi(api = Build.VERSION_CODES.M) 
      @Override 
      public void onLoadMore() { 
       packagesLists.add(null); 
       recyclerAdapter.notifyItemInserted(packagesLists.size() - 1); 

       getpackageRequest(false, serverStatus, 
         recyclerAdapter.getItemCount(), 
         null, 
         payStatus, true); 
      } 
     }); 
    } 



public void getpackageRequest(boolean allowShowDialog, final int serverStatus, int start, String searchParameters, final int payStatus, final boolean loadMore) { 



    DataRepository dataRepository = new DataRepository(getActivity()); 

    dataRepository.getVolleyRequest(allowShowDialog, Request.Method.GET, url, new HashMap<String, String>(), new DataRepository.DaTaRepositoryCallback() { 
     @Override 
     public void onSuccess(String response) throws JSONException { 
      JSONObject jsonObject = new JSONObject(response); 



      Log.e("response packages", jsonObject.toString() + "mm"); 
      int errorcode = jsonObject.getInt("errorcode"); 
      String message = jsonObject.getString("message"); 

      if (errorcode == 0) { 

       JSONObject dataObject = jsonObject.getJSONObject("data"); 
       packageSize = dataObject.getInt("count"); 
       ((DashboardActivity) getActivity()).updateHeaderValue(packageSize); 

       JSONArray listArray = dataObject.getJSONArray("list"); 


       if (listArray.length() > 0) { 
        emptyLayout.setVisibility(View.GONE); 
        recyclerView.setVisibility(View.VISIBLE); 

        if (loadMore) { 
         packagesLists.remove(packagesLists.size() - 1); 
         recyclerAdapter.notifyItemRemoved(packagesLists.size()); 
         recyclerAdapter.setLoaded(); 

        } 


        Gson gson = new Gson(); 
        PackagesList[] packages = gson.fromJson(listArray.toString(), PackagesList[].class); 
        packagesLists.addAll(Arrays.asList(packages)); 
        recyclerAdapter.notifyDataSetChanged(); 


       } else { 

        if (!loadMore) { 
         recyclerView.setVisibility(View.GONE); 
         emptyLayout.setVisibility(View.VISIBLE); 
        } 


       } 
      } else { 
       new MaterialDialog.Builder(getActivity()) 
         .content(message) 
         .positiveText(getString(R.string.u_yes)) 
         .show(); 
      } 

     } 

Ich denke, Problem ist notifyDataSetChanged.Wie kann ich neue Elemente in RecyclerView hinzufügen können frühere Artikel Stile speichern? Dank

Antwort

0

Sie sollten einige Flag in Daten beibehalten, basierend darauf können Sie die Sichtbarkeit Ihrer Ansichten wechseln.

Verwandte Themen