2

Ich wollte Recyclerview innerhalb eines Fragments meiner 3 Fragment Viewpager verwenden. Ich habe den Code geschrieben und es lief perfekt, aber ich weiß nicht, warum es zu langsam ist. Wenn ich von einem Fragment zum anderen tausche, dauert es fast eine halbe Minute. Ich weiß nicht, welche Fehler ich hier gemacht habe.Recyclerview in Fragment in einem Viewpager

Hauptaktivität

public class MainActivity extends AppCompatActivity { 

    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     toolbar = (Toolbar)findViewById(R.id.toolBar); 
     tabLayout = (TabLayout)findViewById(R.id.tabs); 
     viewPager = (ViewPager)findViewById(R.id.viewPager); 

     setSupportActionBar(toolbar); 
     ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     viewPagerAdapter.addFragment(new OneFragment(), "One"); 
     viewPagerAdapter.addFragment(new TwoFragment(), "Two"); 
     viewPagerAdapter.addFragment(new ThreeFragment(), "Three"); 

     viewPager.setAdapter(viewPagerAdapter); 
     tabLayout.setupWithViewPager(viewPager); 

    } 
} 

Hier ist es eine meiner Fragment, wo ich versuchte recyclerview zu implementieren.

Fragment

public class TwoFragment extends Fragment { 

    public TwoFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_two, container, false); 

     OurData ourData = new OurData(); 
     ourData.pic.add(R.drawable.b); 
     ourData.title.add("Hello"); 
     RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.listRecyclerView); 
     ListAdapter listAdapter = new ListAdapter(); 
     recyclerView.setAdapter((listAdapter)); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
     recyclerView.setLayoutManager(layoutManager); 

     return view; 
    } 
} 

public class ListAdapter extends RecyclerView.Adapter { 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 
     return new ListViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     ((ListViewHolder) holder).bindView(position); 
    } 

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

    private class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     private TextView text; 
     private ImageView image; 

     public ListViewHolder(View itemview) { 
      super(itemview); 
      text = (TextView) itemview.findViewById(R.id.textF); 
      image = (ImageView) itemview.findViewById(R.id.imageF); 
      itemview.setOnClickListener(this); 
     } 

     public void bindView(int position) { 
      text.setText(OurData.title.get(position)); 
      image.setImageResource(OurData.pic.get(position)); 
     } 

     public void onClick(View view) { 

     } 
    } 
} 

public class OurData { 

    public static ArrayList<String> title = new ArrayList<String>(); 
    public static ArrayList<Integer> pic = new ArrayList<Integer>(); 

} 

Es tooks denken meine ganzen Tag, was ich falsch gemacht habe. Bitte hilf mir!

Antwort

0

stellen Sie Ihren Adapter recyclerView.setAdapter((listAdapter)); insise onViewCreated statt onCreateView

+0

Problem war in meinem resource.Images Größe waren zu groß. Danke –

0

ich glaube, das Problem aufgrund eines Ihrer Methoden ist. vielleicht ‚OurData‘ und auch Sie sind sicher, dass dies:

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

versuchen auch Log in jedem Code und den Teil sehen, der Zeit braucht vor allem ‚OurData‘

+0

Gelöst jetzt. Problem war in meinen resources.images Größe waren zu groß. Danke –

Verwandte Themen