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();
}
}
}