一畳のくつろぎタイム

このブログでは紹介する商品画像をAmazonアソシエイトより借りています。画像やリンクにはアフィリエイト広告が含まれる事があります

2018年1月24日水曜日

RecycleViewをコードだけで作る

Googleのサイトや他の技術者のブログなどで見るとXMLで作ってあるが、
理解という意味ではコードだけの方が分かりやすいのでコードだけで作ってみた。

画像は削除処理を入れたコードのものですが、コードは可能な限りシンプルにするため入っていません。

RecycleViewはそのままでは使えないので、build.gradle(Modle:appeに一行追加します。
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:recyclerview-v7:26.+'   <---------- この一行を追加
}
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import android.widget.TextView;
 
import java.util.Arrays;
import java.util.List;
 
/**
 * 一番シンプルなRecycleViewの使い方
 */
public class MainActivity extends AppCompatActivity {
 
    private List list;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
 
        // 表示するデータの用意
        list = Arrays.asList(new String[]{"北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県"});
 
        // RecycleViewを使うには1 まずgradleに記述を書く
        RecyclerView recycleView = new RecyclerView(this);
 
        // 区切り線はディフォルトではつかないので作ってセットする
        RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
        recycleView.addItemDecoration(itemDecoration);
 
        // RecycleViewはレイアウトマネージャーというものが必要 LineaLayoutManagerを選ぶとリストになる
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recycleView.setLayoutManager(linearLayoutManager);
 
        // アダプタはListViewと同じ
        recycleView.setAdapter(new MyRecycleViewAdapter(this));
 
        // RecycleViewをコンテンツビューとする
        setContentView(recycleView);
    }
 
    // リサイクルビュー用アダプタ
    private class MyRecycleViewAdapter extends RecyclerView.Adapter {
 
        private Context context;
 
        // コンストラクタ
        public MyRecycleViewAdapter(Context context) {
            this.context = context;
        }
 
        // RecycleView1つのセルに使うビューの設定
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 
            // 今回はテキストビューのみ
            TextView textView = new TextView(context);
 
            // ホルダーに一番上のビューを渡すホルダーはabstractなので継承する
            RecyclerView.ViewHolder holder = new RecyclerView.ViewHolder(textView) {
 
            };
 
            return holder;
        }
 
 
        // データとViewを結びつける場所
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
 
            String str = list.get(position);
            ((TextView)holder.itemView).setText(str);
        }
 
        // RecycleViewに項目数を教える
        @Override
        public int getItemCount() {
            return list.size();
        }
    }
}