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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア14
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。