0

LinearLayoutManagerを円(円の繰り返しアイテム)にする簡単な方法はありますか?LinearLayoutManager - 円内での繰り返し

私はそれがより少ないコードで方法を見つけるためにクールになるそうするために

+0

はあなたが項目のいくつかの固定された数を持っていることを言っている、とあなたは 'RecyclerView'は、単にそれらをユーザーが最後に到達するたびに繰り返したいですリストの?例えばあなたは "A"、 "B"、 "C"を持っており、あなたは "ABCABCABCABC ..."を永遠に見ることを望みますか? –

+0

はい、常に繰り返します – Tim

答えて

0

まず最初はInteger.MAX_VALUEを返すために、あなたのアダプタのgetItemCount()方法を変更され、それを調査し、独自のカスタムのLayoutManagerを作るための唯一の方法を発見しました。これは実際にはではありませんが、それは20億を超えています。

次に、データソースからアイテムを取得するときは、positionを使用しないでください。代わりに、position % dataSource.size()を使用してください...これは、ユーザーがスクロールするとあなたのアイテムを繰り返します。ここで

は例です:

public class MainActivity extends AppCompatActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     RecyclerView recycler = (RecyclerView) findViewById(R.id.recycler); 
     recycler.setAdapter(new MyAdapter()); 
    } 

    private static class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { 

     private final List<String> items; 

     private MyAdapter() { 
      items = new ArrayList<>(); 
      items.add("A"); 
      items.add("B"); 
      items.add("C"); 
      items.add("D"); 
     } 

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

     @Override 
     public void onBindViewHolder(MyViewHolder holder, int position) { 
      String item = items.get(position % items.size()); 
      ((TextView) holder.itemView).setText(item); 
     } 

     @Override 
     public int getItemCount() { 
      return Integer.MAX_VALUE; 
     } 
    } 


    private static class MyViewHolder extends RecyclerView.ViewHolder { 

     public MyViewHolder(View itemView) { 
      super(itemView); 
     } 
    } 
} 

enter image description here

+0

hmm、それは動作しますが、私はLayoutManagerでこのロジックを持つ方がより明確なコードを持つことを好みます – Tim

関連する問題