質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

3558閲覧

初めての人のためのRecyclerView実装サンプルコード探しています

usb

総合スコア14

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2017/05/02 10:31

編集2017/05/02 16:16

AndroidStudio2.3.1で、縦方向のリスト形式で画像(アイコン)とテキストが、表示されるようなアプリを
作ろうと考えていますが、実際に作る前にRecyclerViewの使い方を、調べています。
初めてRecyclerViewでリストを、実装する場合でも、理解しやすいサンプルコードは、どこかにあるでしょうか?

例えばgithub.comで「RecyclerView」検索すると沢山検索されるので、どれが良いのか迷っています。
https://github.com/search?utf8=%E2%9C%93&q=RecyclerView&type=Repositories

候補1 Android-RecyclerView-Demo
https://github.com/java-lang-programming/Android-RecyclerView-Demo

候補2 android-RecyclerView
https://github.com/googlesamples/android-RecyclerView

候補3 Paginate
https://github.com/MarkoMilos/Paginate

動かしながら調べたいので、ダウンロードしてAndroidStudioでビルド可能なRecyclerViewサンプルコードを
紹介して頂けると助かります。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

Android RecyclerView Sample
https://github.com/googlesamples/android-RecyclerView

ダウンロードしたコード(java)やレイアウト(XML)から「メニュー」「ログ表示」「ラジオボタン」などに関する部分を、全て削除しました。
(ファイルrecycler_view_frag.xmlとtext_row_item.xmlは、そのまま使う)

シンプルなRecyclerViewのサンプルコードが、出来ました。
修正したコードは、下記のようになりました。

MainActivity.java

/* * Copyright (C) 2014 The Android Open Source Project * Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 * これはサンプルですが、元になったコードのライセンスに従います。 */ package com.example.android.recyclerview; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); RecyclerViewFragment fragment = new RecyclerViewFragment(); transaction.replace(R.id.sample_content_fragment, fragment); transaction.commit(); } } }

RecyclerViewFragment.java

/* * Copyright (C) 2014 The Android Open Source Project * Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 * これはサンプルですが、元になったコードのライセンスに従います。 */ package com.example.android.recyclerview; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /* * Demonstrates the use of (RecyclerView) with a (LinearLayoutManager) and a */ public class RecyclerViewFragment extends Fragment { private final static String TAG = RecyclerViewFragment.class.getSimpleName(); private static final int DATASET_COUNT = 60; protected RecyclerView mRecyclerView; protected CustomAdapter mAdapter; protected RecyclerView.LayoutManager mLayoutManager; protected String[] mDataset; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Initialize dataset, this data would usually come from a local content provider or // remote server. initDataset(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.recycler_view_frag, container, false); rootView.setTag(TAG); mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView); // LinearLayoutManager is used here, this will layout the elements in a similar fashion // to the way ListView would layout elements. The RecyclerView.LayoutManager defines how // elements are laid out. mLayoutManager = new LinearLayoutManager(getActivity()); int scrollPosition = 0; // If a layout manager has already been set, get current scroll position. if (mRecyclerView.getLayoutManager() != null) { scrollPosition = ((LinearLayoutManager) mRecyclerView.getLayoutManager()) .findFirstCompletelyVisibleItemPosition(); } mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.scrollToPosition(scrollPosition); mAdapter = new CustomAdapter(mDataset); // Set CustomAdapter as the adapter for RecyclerView. mRecyclerView.setAdapter(mAdapter); return rootView; } @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); } /** * Generates Strings for RecyclerView's adapter. This data would usually come * from a local content provider or remote server. */ private void initDataset() { mDataset = new String[DATASET_COUNT]; for (int i = 0; i < DATASET_COUNT; i++) { mDataset[i] = "This is element #" + i; } } }

CustomAdapter.java

/* * Copyright (C) 2014 The Android Open Source Project * Licensed under the Apache License, Version 2.0 * http://www.apache.org/licenses/LICENSE-2.0 * これはサンプルですが、元になったコードのライセンスに従います。 */ package com.example.android.recyclerview; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /* * Provide views to RecyclerView with data from mDataSet. */ public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { private final static String TAG = CustomAdapter.class.getSimpleName(); private String[] mDataSet; /* * Provide a reference to the type of views that you are using (custom ViewHolder) */ public static class ViewHolder extends RecyclerView.ViewHolder { private final TextView textView; public ViewHolder(View v) { super(v); // Define click listener for the ViewHolder's View. v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "Element " + getAdapterPosition() + " clicked."); } }); textView = (TextView) v.findViewById(R.id.textView); } public TextView getTextView() { return textView; } } /* * Initialize the dataset of the Adapter. * dataSet String[] containing the data to populate views to be used by RecyclerView. */ public CustomAdapter(String[] dataSet) { mDataSet = dataSet; } // Create new views (invoked by the layout manager) @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { // Create a new view. View v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.text_row_item, viewGroup, false); return new ViewHolder(v); } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder viewHolder, final int position) { Log.d(TAG, "Element " + position + " set."); // Get element from your dataset at this position and replace the contents of the view // with that element viewHolder.getTextView().setText(mDataSet[position]); } // Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return mDataSet.length; } }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/sample_main_layout"> <FrameLayout android:id="@+id/sample_content_fragment" android:layout_weight="2" android:layout_width="match_parent" android:layout_height="0px" /> </LinearLayout>

サンプルの実行結果。
イメージ説明

投稿2017/05/03 01:26

usb

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問