0

Ich mache einen meme Generator wth rund 150 entries.Each Eintrag (Mem-Klasse) hat ein Bild und eine Text-AnsichtRecycler Ansicht Scrollen Verzögerung mit benutzerdefinierten Adapter

Das Scrollen mit vieler Verzögerung langsam ist, noch ein Verbesserung gegenüber einer normalen listview.The App stürzt nach einem bestimmten Punkt mit dem logcat diese Nachricht fatale Signal 11 (SIGSEGV) zeigt, Code 1, Fehler Adr 0xf0 in tid 26637 (RenderThread)

Hier ist mein Code:

Meme Klasse

public class Meme { 

    private String memeName; 
    private int ImgResId; 

    public Meme(String name, int imageResourceId) 
    { 
     memeName=name; 
     ImgResId=imageResourceId; 
    } 
    public String getMemeName(){return memeName;} 


    public int getImgResId(){ return ImgResId;} 
} 
vielleicht 10 oder 20 und erstellen Sie eine Endlos-Scroll-

Meme Adapter

public class MemeAdapter extends RecyclerView.Adapter<MemeAdapter.MyViewHolder> { 

    private List<Meme> memeList; 

    public class MyViewHolder extends RecyclerView.ViewHolder { 
     public TextView meme_name; 
     public ImageView image; 

     public MyViewHolder(View view) { 
      super(view); 
      meme_name = (TextView) view.findViewById(R.id.meme_name); 
      image=(ImageView) view.findViewById(R.id.meme_icon); 
     } 
    } 


    public MemeAdapter(List<Meme> memeList) { 
     this.memeList = memeList; 
    } 

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

     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     Meme meme = memeList.get(position); 
     holder.meme_name.setText(meme.getMemeName()); 
     holder.image.setImageResource(meme.getImgResId()); 
    } 

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

} 

die Aktivität der Erstellung der Liste

public class MemeListActivity extends AppCompatActivity { 
    private MemeAdapter memeAdapter; 
    private List<Meme> memeList = new ArrayList<>(); 
    private RecyclerView recyclerView; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_memelist); 

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

     memeAdapter = new MemeAdapter(memeList); 

     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView.setLayoutManager(mLayoutManager); 
     recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(memeAdapter); 

     recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), recyclerView, new ClickListener() { 
      @Override 
      public void onClick(View view, int position) { 
       Meme meme = memeList.get(position); 
       Toast.makeText(getApplicationContext(), meme.getMemeName() + " is selected!", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(MemeListActivity.this, EnterTextActivity.class); 
       intent.putExtra("flag", 1); 
       int id = meme.getImgResId(); 
       intent.putExtra("res-id", id); 
       startActivity(intent); 
      } 

      @Override 
      public void onLongClick(View view, int position) { 

      } 
     })); 

     prepareMemeData(); 
    } 

    private void prepareMemeData() { 
     // Create an ArrayList of Meme objects 
     memeList.add(new Meme("aaaand it's gone", R.drawable.aaaaand_its_gone)); 
     memeList.add(new Meme("am i the only who", R.drawable.am_i_the)); 
     memeList.add(new Meme("angry indian father", R.drawable.amrish_puri)); 
     memeList.add(new Meme("all things", R.drawable.all_things)); 
     memeList.add(new Meme("ancient aliens", R.drawable.ancient_aliens)); 
     memeList.add(new Meme("angry baby", R.drawable.angry_baby)); 
     memeList.add(new Meme("angry doge", R.drawable.angry_doge)); 
     memeList.add(new Meme("arnab thug life", R.drawable.arnab_thug_life)); 
     memeList.add(new Meme("awkward seal", R.drawable.conf_seal)); 
     memeList.add(new Meme("condescending husky", R.drawable.angry_husky)); 
     memeList.add(new Meme("baby godfather", R.drawable.baby_godfather)); 
     memeList.add(new Meme("bad luck brian", R.drawable.bad_luck_brian)); 
     memeList.add(new Meme("batman slaps robin", R.drawable.batman_robin)); 
     memeList.add(new Meme("be like bill", R.drawable.be_like_bill)); 
     memeList.add(new Meme("bear grylls", R.drawable.bear_grylls)); 
     memeList.add(new Meme("brace yourselves", R.drawable.brace_yourselves)); 
     memeList.add(new Meme("buddy jesus", R.drawable.buddy_christ)); 
     memeList.add(new Meme("business cat", R.drawable.business_cat)); 
     memeList.add(new Meme("butthurt dweller", R.drawable.butthurt_dweller)); 
     memeList.add(new Meme("calm lemur", R.drawable.calm_lemur)); 
     memeList.add(new Meme("cereal guy", R.drawable.cereal_guy)); 
     memeList.add(new Meme("chemistry cat", R.drawable.chem_cat)); 
     memeList.add(new Meme("chuck norris", R.drawable.chuck_norris)); 
     memeList.add(new Meme("CID ", R.drawable.cid)); 
     memeList.add(new Meme("confused baby", R.drawable.conf_baby)); 
     memeList.add(new Meme("confession bear", R.drawable.confession_bear)); 
     memeList.add(new Meme("correction guy", R.drawable.correction_guy)); 
     memeList.add(new Meme("dekh bhai", R.drawable.dekh_bhai)); 
     memeList.add(new Meme("disaster girl", R.drawable.disaster_girl)); 
     memeList.add(new Meme("depressed dog", R.drawable.depressed)); 
     memeList.add(new Meme("doesn't matter rock", R.drawable.doesntmatter)); 
     memeList.add(new Meme("doge", R.drawable.doge)); 
     memeList.add(new Meme("doge alternate", R.drawable.doge2)); 
     memeList.add(new Meme("drunk baby", R.drawable.drunk_baby2)); 
     memeList.add(new Meme("drunk obama", R.drawable.drunk_obama)); 
     memeList.add(new Meme("dumbstruck koala", R.drawable.dumbstruck_koala)); 
     memeList.add(new Meme("dwight schrute", R.drawable.dwight_schrute)); 
     memeList.add(new Meme("engineering professor ", R.drawable.engg_prof)); 
     memeList.add(new Meme("everywhere toy story ", R.drawable.everywhere)); 
     memeList.add(new Meme("evil raccoon plotting", R.drawable.evil_racc)); 
     memeList.add(new Meme("evil toddler", R.drawable.evil_toddler)); 
     memeList.add(new Meme("facepalm picard ", R.drawable.facepalm)); 
     memeList.add(new Meme("finally over", R.drawable.finally_over)); 
     memeList.add(new Meme("first day on the internet kid", R.drawable.first_day_on_the_internet_kid)); 
     memeList.add(new Meme("first world problems", R.drawable.first_world_problems)); 
     memeList.add(new Meme("futurama fry", R.drawable.futurama_fry)); 
     memeList.add(new Meme("gay seal", R.drawable.gay_seal)); 
     memeList.add(new Meme("gollum", R.drawable.gollum)); 
     memeList.add(new Meme("gordon ramsay", R.drawable.gordon_ramsay)); 
     memeList.add(new Meme("grumpy cat", R.drawable.grumpy_cat)); 
     memeList.add(new Meme("grumpy cat 2", R.drawable.grumpy_cat1)); 
     memeList.add(new Meme("heavy breathing cat", R.drawable.heavy_breathing_cat)); 
     memeList.add(new Meme("high guy", R.drawable.high_guy)); 
     memeList.add(new Meme("happy cat", R.drawable.cat_smile)); 
     memeList.add(new Meme("i'll have you know", R.drawable.ill_have_you_know)); 
     memeList.add(new Meme("impossibru", R.drawable.impossibru)); 
     memeList.add(new Meme("if you know what i mean", R.drawable.iykwim)); 
     memeList.add(new Meme("jackie chan", R.drawable.jackie)); 
     memeList.add(new Meme("kejriwal happy", R.drawable.kejri)); 
     memeList.add(new Meme("kejriwal angry", R.drawable.kejru_angry)); 
     memeList.add(new Meme("kejriwal2", R.drawable.kejri2)); 
     memeList.add(new Meme("kermit frog(none of my business)", R.drawable.none_business)); 
     memeList.add(new Meme("kim jong un sad", R.drawable.kim_jong_un_sad)); 
     memeList.add(new Meme("the joker", R.drawable.joker)); 
     memeList.add(new Meme("lame pun eel", R.drawable.lame_pun_eel)); 
     memeList.add(new Meme("laughing obama", R.drawable.laughing_obama)); 
     memeList.add(new Meme("lazy college senior", R.drawable.lazy_college_senior)); 
     memeList.add(new Meme("great gatsby leo", R.drawable.leo_cheers)); 
     memeList.add(new Meme("liam neeson", R.drawable.liam_neeson)); 
     memeList.add(new Meme("lion king", R.drawable.lk)); 
     memeList.add(new Meme("look at all these..", R.drawable.look_at_all)); 
     memeList.add(new Meme("matrix morpheus", R.drawable.matrix_morpheus)); 
     memeList.add(new Meme("mj popcorn", R.drawable.mj_popcorn)); 
     memeList.add(new Meme("mr.bean", R.drawable.mr_bean)); 
     memeList.add(new Meme("naacho bc", R.drawable.naacho_bc)); 
     memeList.add(new Meme("NaMo checkout", R.drawable.namo_china)); 
     memeList.add(new Meme("Namo ", R.drawable.namo_s)); 
     memeList.add(new Meme("nana angry", R.drawable.nana_angry)); 
     memeList.add(new Meme("naughty baby", R.drawable.baby_naughty)); 
     memeList.add(new Meme("nobody cares", R.drawable.nobody_cares)); 
     memeList.add(new Meme("one does not simply..", R.drawable.boromir1)); 
     memeList.add(new Meme("osama bomb people", R.drawable.boromir1)); 
     memeList.add(new Meme("not bad obama", R.drawable.not_bad_obama)); 
     memeList.add(new Meme("pissed obama", R.drawable.obama_pissed)); 
     memeList.add(new Meme("weird expression obama", R.drawable.obama2)); 
     memeList.add(new Meme("patrick star", R.drawable.patrick_star)); 
     memeList.add(new Meme("rare pepe", R.drawable.pepe)); 
     memeList.add(new Meme("bad luck sad pepe", R.drawable.pepe_sad)); 
     memeList.add(new Meme("philosoraptor", R.drawable.philosoraptor)); 
     memeList.add(new Meme("plotting raccoon and human", R.drawable.plotting_racc)); 
     memeList.add(new Meme("professor oak", R.drawable.prof_oak)); 
     memeList.add(new Meme("good guy putin", R.drawable.putin_good)); 
     memeList.add(new Meme("rajanikanth mind it!", R.drawable.rajani_mindit)); 
     memeList.add(new Meme("raga's babbar sher", R.drawable.rahul_babbarsher)); 
     memeList.add(new Meme("Rahul gandhi depressed", R.drawable.rahul1)); 
     memeList.add(new Meme("raga worrying", R.drawable.rahul2)); 
     memeList.add(new Meme("rich men laughing", R.drawable.rich_men_lol)); 
     memeList.add(new Meme("sad polar bear", R.drawable.sad_polar)); 
     memeList.add(new Meme("sarcastic nicholas cage", R.drawable.sarcastic_nicholas_cage)); 
     memeList.add(new Meme("sansakari alok nath", R.drawable.aloknath1)); 
     memeList.add(new Meme("scared baby", R.drawable.scared_baby)); 
     memeList.add(new Meme("scumbag steve", R.drawable.scumbag_steve)); 
     memeList.add(new Meme("shut up and take my money", R.drawable.shut_up_money)); 
     memeList.add(new Meme("severus snape", R.drawable.snape)); 
     memeList.add(new Meme("so much win picard", R.drawable.so_much_win)); 
     memeList.add(new Meme("spiderman hospital", R.drawable.spiderman_hospital)); 
     memeList.add(new Meme("spiderman table", R.drawable.spiderman_jerk)); 
     memeList.add(new Meme("spiderman peter parker", R.drawable.spiderman_peter_parker)); 
     memeList.add(new Meme("spidey approves", R.drawable.spidey_approves)); 
     memeList.add(new Meme("spidey butt", R.drawable.spidey_butt)); 
     memeList.add(new Meme("spidey high", R.drawable.spidey_high)); 
     memeList.add(new Meme("spidey hot", R.drawable.spidey_hot)); 
     memeList.add(new Meme("spidey whisper", R.drawable.spidey_whisper)); 
     memeList.add(new Meme("spongebob and obama", R.drawable.sponge_obaa)); 
     memeList.add(new Meme("spongebob rainbow", R.drawable.spongebob_nocare)); 
     memeList.add(new Meme("squidward hard work", R.drawable.squid_hard_work)); 
     memeList.add(new Meme("squidward realisation", R.drawable.squidward)); 
     memeList.add(new Meme("sudden realisation", R.drawable.sudden_realisation)); 
     memeList.add(new Meme("surprised vegeta", R.drawable.surprized_vegeta)); 
     memeList.add(new Meme("surprised nigga", R.drawable.nigga)); 
     memeList.add(new Meme("swag cat", R.drawable.cool_cat)); 
     memeList.add(new Meme("sweet brown", R.drawable.sweet_brown)); 
     memeList.add(new Meme("that escalaed quickly", R.drawable.that_escalate)); 
     memeList.add(new Meme("that would be great", R.drawable.that_would_be_great)); 
     memeList.add(new Meme("the most interesting man", R.drawable.the_most_interesting_man)); 
     memeList.add(new Meme("third world sceptical kid", R.drawable.third_world_skeptical_kid)); 
     memeList.add(new Meme("third world dancing kids", R.drawable.third_world_success_kid)); 
     memeList.add(new Meme("to do list", R.drawable.to_do_list)); 
     memeList.add(new Meme("tony stark", R.drawable.tony)); 
     memeList.add(new Meme("too damn high", R.drawable.too_high)); 
     memeList.add(new Meme("troll cry face", R.drawable.troll_cry)); 
     memeList.add(new Meme("troll face", R.drawable.troll_face)); 
     memeList.add(new Meme("troll forever alone", R.drawable.troll_foreverlone)); 
     memeList.add(new Meme("like a boss", R.drawable.troll_lab)); 
     memeList.add(new Meme("troll angry no", R.drawable.troll_no)); 
     memeList.add(new Meme("troll shocked", R.drawable.troll_shock)); 
     memeList.add(new Meme("trump", R.drawable.trump)); 
     memeList.add(new Meme("proud trump", R.drawable.proud_trump)); 
     memeList.add(new Meme("unhelpful high school teacher", R.drawable.unhelpful_high_school_teacher)); 
     memeList.add(new Meme("Victory baby", R.drawable.celeb_baby)); 
     memeList.add(new Meme("waiting..", R.drawable.wait)); 
     memeList.add(new Meme("what?", R.drawable.what2)); 
     memeList.add(new Meme("troll why?", R.drawable.why)); 
     memeList.add(new Meme("Balotelli why always me?", R.drawable.why_always_me)); 
     memeList.add(new Meme("Willy wonka", R.drawable.willy_wonka)); 
     memeList.add(new Meme("wtf jackie", R.drawable.wtf_jackie)); 
     memeList.add(new Meme("yo dawg", R.drawable.yo_dawg)); 
     memeList.add(new Meme("yo goose", R.drawable.yo_goose)); 
     memeList.add(new Meme("y you no..", R.drawable.yuno)); 
    } 

    public interface ClickListener { 
     void onClick(View view, int position); 

     void onLongClick(View view, int position); 
    } 

    public static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener { 

     private GestureDetector gestureDetector; 
     private MemeListActivity.ClickListener clickListener; 

     public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final MemeListActivity.ClickListener clickListener) { 
      this.clickListener = clickListener; 
      gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { 
       @Override 
       public boolean onSingleTapUp(MotionEvent e) { 
        return true; 
       } 

       @Override 
       public void onLongPress(MotionEvent e) { 
        View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); 
        if (child != null && clickListener != null) { 
         clickListener.onLongClick(child, recyclerView.getChildPosition(child)); 
        } 
       } 
      }); 
     } 

     @Override 
     public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { 

      View child = rv.findChildViewUnder(e.getX(), e.getY()); 
      if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) { 
       clickListener.onClick(child, rv.getChildPosition(child)); 
      } 
      return false; 
     } 

     @Override 
     public void onTouchEvent(RecyclerView rv, MotionEvent e) { 
     } 

     @Override 
     public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 

     } 
    } 

} 
+0

haben Sie versucht, diesen benutzerdefinierten Touch Hörer zu entfernen? vielleicht interferiert es irgendwie mit dem Scrollen – bartol

+0

Ich probierte das die Verzögerung bleibt –

Antwort

0

Versuchen Sie, die Anzahl der Elemente in einer einzigen Instanz hinzugefügt zu begrenzen. Wenn der Benutzer den unteren Rand erreicht, werden neue Einträge zur Liste hinzugefügt.

Für einen Endlos-Scroll-Code erstellen:

private boolean loading = true; 
    int oldVisibleItems, numberOfVisibleItem, totalNumberOfItem; 

     rView.addOnScrollListener(new RecyclerView.OnScrollListener() 
     { 
      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) 
      { 
       if(dy > 0) //check for scroll down 
       { 
        numberOfVisibleItem = mLayoutManager.getChildCount(); 
        totalNumberOfItem = mLayoutManager.getItemCount(); 
        oldVisibleItems = mLayoutManager.findFirstVisibleItemPosition(); 

        if (loading) 
        { 
         if ((numberOfVisibleItem + oldVisibleItems) >= totalNumberOfItem) 
         { 
          loading = false; 
          Log.d("Check for last item", "This is last item"); 

         } 

//Do pagination.. i.e. fetch new data 
        } 
       } 
      } 
     }); 
+0

Wie benutze ich das genau? Muss ich eine separate Klasse dafür erstellen? Ich bin immer noch ein Amateur und brauche Hilfe –

Verwandte Themen