1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AndroidのRecyclerViewを使ってデータを表示する1

Last updated at Posted at 2017-01-29

Screenshot_20170129-184755.png

recyclerviewを追加

build.gradle
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'

RecycleViewを設定
layoutManagerにLinearLayoutManagerをセット

activity_simple_recycler_view.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/simple_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layoutManager="android.support.v7.widget.LinearLayoutManager" />

1つ1つのViewを設定

simple_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="64dp"
              android:orientation="vertical"
              android:padding="8dp">

    <TextView
        android:id="@+id/simple_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
</LinearLayout>

テストデータを作成

DummyDataGenerator
public class DummyDataGenerator {
    public static List<String> generateStringListData() {
        ArrayList<String> list = new ArrayList<>();
        list.add("■アジア由来の牛");
        list.add("黄牛");
        list.add("草原紅牛");
        list.add("朝鮮牛");
        list.add("ブラーマン種");
        list.add("ヒンドゥー種");
        list.add("カンペンセン種");
        list.add("■日本在来の牛");
        list.add("口之島牛");
        list.add("見島牛");
        list.add("見蘭牛");
        list.add("和牛");
        list.add("褐毛和種");
        list.add("黒毛和種");
        list.add("無角和種");
        list.add("日本短角種");
        list.add("■欧州由来の牛");
        list.add("アバディーン・アンガス種");
        list.add("アングラー種");
        list.add("ウェルシュブラック種");
        list.add("エアシャー種");
        list.add("キニアーナ種");
        list.add("ギャロレー種");
        list.add("グロニンゲン種");
        list.add("ケリー種");
        list.add("ゲルプフィー種");
        list.add("サウスデボン種");
        list.add("ジャージー種");
        list.add("シャロレー種");
        list.add("ショートホーン種");
        list.add("シンメンタール種");
        list.add("スウェーデンレッドアンドホワイト種");
        list.add("デキスター種");
        list.add("デボン種");
        list.add("デーリィショートホーン種");
        list.add("ノルウェーレッド種");
        list.add("ノルマン種");
        list.add("ハイランド種");
        list.add("パイルージュフランドル種");
        list.add("ピンツガウエル種");
        list.add("フィンランド種");
        list.add("ブラウンスイス種");
        list.add("ヘレフォード種");
        list.add("ホルスタイン種");
        list.add("マレーグレー種");
        list.add("マルキジアーナ種");
        list.add("ミューズラインイーセル種");
        list.add("ムーザン種");
        list.add("モンベリエール種");
        list.add("リンカーンレッド種");
        list.add("レッドデーニッシュ種");
        list.add("レッドポール種");
        list.add("ロートフィー種");
        list.add("ロマニョーラ種");
        list.add("ホワイトベルテッドギャラウェイ種");
        return list;
    }
}

Adapterを設定

SimpleStringAdapter
public class SimpleStringAdapter extends RecyclerView.Adapter<SimpleStringAdapter.ViewHolder> {
    protected List<String> dataset;
    private View.OnClickListener onItemViewClickListener;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public final TextView textView;

        public ViewHolder(View v) {
            super(v);
            textView = (TextView) v.findViewById(R.id.simple_text_view);
        }
    }

    public SimpleStringAdapter(List<String> myDataset){
        dataset = myDataset;
    }

    public void setOnItemClickListener(View.OnClickListener onItemClickListener){
        this.onItemViewClickListener = onItemClickListener;
    }
    // 新しいViewHolderを作成する(LayoutManagerから呼び出される)
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.simple_row, parent, false);
        // Viewにクリックリスナをつける。Viewを押した時のアクション
        if (onItemViewClickListener != null){
            v.setOnClickListener(onItemViewClickListener);
        }

        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    //Viewの中のデータを変更する(LayoutManagerから呼び出される)
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String text = dataset.get(position);
        holder.textView.setText(text);
    }

    //データの数を返す (LayoutManagerから呼び出される)
    @Override
    public int getItemCount() {
        return dataset.size();
    }
}
MainActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private SimpleStringAdapter simpleStringAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //RecycleViewをセット
        setContentView(R.layout.activity_simple_recycler_view);
        setupView();
    }

    private void setupView(){
        //一つ一つのViewをセット
        recyclerView = (RecyclerView) findViewById(R.id.simple_recycler_view);

        simpleStringAdapter = new SimpleStringAdapter(DummyDataGenerator.generateStringListData());
        //ボタンを押した時のアクション用
        simpleStringAdapter.setOnItemClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Toast.makeText(view.getContext(), "Position:" + recyclerView.getChildAdapterPosition(view) + "がクリックされました。", Toast.LENGTH_SHORT).show();
            }
        });

        recyclerView.setAdapter(simpleStringAdapter);
    }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?