Android RecyclerView使用紹介
7632 ワード
回転:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html
RecyclerViewはAndroid Lバージョンに新しく追加されたListViewに代わるSDKであり、その柔軟性と代替性はlistviewに比べて優れている。次は一連の文章を通して、RecyclerViewの使い方を説明します。ListViewを徹底的に捨てます。紹介します。
RecyclerViewはListViewと同じ原理です。少量のViewだけを維持し、大量のデータセットを表示することができます。RecyclerViewは、データの展示と処理を以下の2つの方法で簡略化した。
今回の例は一番簡単な使い方です。これからはもっと多くのRecyclerViewの他のいくつかのつまらない爆発の使い方を紹介します。作者が使う環境はAndroid Studio 0.8.6です。1、依存を追加する
ASのbuild.gradleに依存を追加し、同期して依存パケットを導入することができます。
[html]view plincopy
依存を追加してからコードを書き始めました。ListViewの使い方と似ています。xmlレイアウトファイルの中にRecyclerViewのレイアウトを作成します。
[java]view plincopy
[java]view plincopy
これらのコードの例を書いたら、もう走れます。例からもわかるように、RecyclerViewの使い方はListViewより複雑ではなく、むしろより柔軟で使いやすく、データ、配列、データの展示方法を分割してカスタマイズできるタイプで、カスタムの形も多く、非常に柔軟です。横のレイアウト
横にしたいListはLineear LayoutManagerを設置すればいいです。mLayoutManagerのタイプはLinear LayoutManagerで、父ではなくLiner LayoutManagerです。java view plincopy。
Gridレイアウトのリストがほしいなら、LayoutManagerがGride LayoutManagerであると宣言すればいいです。
滝の流れはStaggreed LayoutManagerを使いましょう。具体的な方法は上記と似ていますので、紹介しません。
RecyclerViewの高級な方法
RecyclerViewを使用していると、各クリックイベントにListViewほど楽ではないことが分かりました。ListViewのように直接OnItemClickListenerを追加すればいいです。実は私達はRecyclerViewをListViewのアップグレード版として使わないでください。彼を容器として見てほしいです。同時に多くのItemが含まれています。それらは違った方法で組み合わせを並べてもいいです。とても柔軟です。クリック方法は自分の意思で実現できます。
このセクションでは、RecyclerViewにクリックイベントを追加する方法を説明し、Itemの削除方法を簡単に紹介します。クリックイベントを追加
前回はRecyclerViewのAdpaterをどのように使うかを話しましたが、Adapterはクリックイベントを追加するのにいいところです。中は構造レイアウトなどのViewの主要な場所であり、データとレイアウトを結合するところです。まず私達はAdapterの中でクリックを実現するインターフェースを作ります。viewはItemをクリックします。dataは私達のデータです。私達は私がクリックしたエリアの部分のデータが何なのかを知りたいので、次のステップで操作します。
[java]view plincopy
[java]view plincopy
[java]view plincopy
以前はListViewの中で、データを修正したらAdapterのnotifyDataset Changeを使って画面を更新することができます。しかし、RecyclerViewにはもっと高級な使い方があります。
追加データ:[java]view plincopy
[java]view plincopy
[java]view plincopy
RecyclerViewはAndroid Lバージョンに新しく追加されたListViewに代わるSDKであり、その柔軟性と代替性はlistviewに比べて優れている。次は一連の文章を通して、RecyclerViewの使い方を説明します。ListViewを徹底的に捨てます。紹介します。
RecyclerViewはListViewと同じ原理です。少量のViewだけを維持し、大量のデータセットを表示することができます。RecyclerViewは、データの展示と処理を以下の2つの方法で簡略化した。
LayoutManager item 。
。
また、あなた自身のLayoutManagerを定義し、削除動画を追加することもできます。RecyclerViewプロジェクトの構造は以下の通りです。Adapter: RecyclerView , RecyclerView.Adapter , item 。
LayoutManager: item , 。 View ,LayoutManager , View findViewById ( ListView )。
現在のSDKでは、3つのオリジナルのラyoutManagerが提供されています。LinearLayoutManager
GridLayoutManager
StaggeredGridLayoutManager
簡単なRecyclerViewの使い方今回の例は一番簡単な使い方です。これからはもっと多くのRecyclerViewの他のいくつかのつまらない爆発の使い方を紹介します。作者が使う環境はAndroid Studio 0.8.6です。1、依存を追加する
ASのbuild.gradleに依存を追加し、同期して依存パケットを導入することができます。
[html]view plincopy
dependencies {
...
compile 'com.android.support:recyclerview-v7:21.0.+'
}
2、コードの作成依存を追加してからコードを書き始めました。ListViewの使い方と似ています。xmlレイアウトファイルの中にRecyclerViewのレイアウトを作成します。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
</RelativeLayout>
レイアウトを作成したらMainActivityでこのRecyclerViewを取得し、LayoutManagerとAdapterを宣言します。コードは以下の通りです。[java]view plincopy
mRecyclerView = (RecyclerView)findViewById(R.id.my_recycler_view);
// LayoutManager
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
// item ,
mRecyclerView.setHasFixedSize(true);
// Adapter
mAdapter = newMyAdapter(getDummyDatas());
mRecyclerView.setAdapter(mAdapter);
次の問題はAdapterの作成です。[java]view plincopy
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
public String[] datas = null;
public MyAdapter(String[] datas) {
this.datas = datas;
}
// View, LayoutManager
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);
ViewHolder vh = new ViewHolder(view);
return vh;
}
//
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.mTextView.setText(datas[position]);
}
//
@Override
public int getItemCount() {
return datas.length;
}
// ViewHolder, Item
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View view){
super(view);
mTextView = (TextView) view.findViewById(R.id.text);
}
}
}
3、運転これらのコードの例を書いたら、もう走れます。例からもわかるように、RecyclerViewの使い方はListViewより複雑ではなく、むしろより柔軟で使いやすく、データ、配列、データの展示方法を分割してカスタマイズできるタイプで、カスタムの形も多く、非常に柔軟です。横のレイアウト
横にしたいListはLineear LayoutManagerを設置すればいいです。mLayoutManagerのタイプはLinear LayoutManagerで、父ではなくLiner LayoutManagerです。java view plincopy。
mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
GridレイアウトGridレイアウトのリストがほしいなら、LayoutManagerがGride LayoutManagerであると宣言すればいいです。
mLayoutManager = new GridLayoutManager(context,columNum);
mRecyclerView.setLayoutManager(mLayoutManager);
なお、Gridレイアウトでは、リストのOrientation属性を設定して、横方向と縦方向のGridレイアウトを実現してもよい。滝の流れ模様滝の流れはStaggreed LayoutManagerを使いましょう。具体的な方法は上記と似ていますので、紹介しません。
RecyclerViewの高級な方法
RecyclerViewを使用していると、各クリックイベントにListViewほど楽ではないことが分かりました。ListViewのように直接OnItemClickListenerを追加すればいいです。実は私達はRecyclerViewをListViewのアップグレード版として使わないでください。彼を容器として見てほしいです。同時に多くのItemが含まれています。それらは違った方法で組み合わせを並べてもいいです。とても柔軟です。クリック方法は自分の意思で実現できます。
このセクションでは、RecyclerViewにクリックイベントを追加する方法を説明し、Itemの削除方法を簡単に紹介します。クリックイベントを追加
前回はRecyclerViewのAdpaterをどのように使うかを話しましたが、Adapterはクリックイベントを追加するのにいいところです。中は構造レイアウトなどのViewの主要な場所であり、データとレイアウトを結合するところです。まず私達はAdapterの中でクリックを実現するインターフェースを作ります。viewはItemをクリックします。dataは私達のデータです。私達は私がクリックしたエリアの部分のデータが何なのかを知りたいので、次のステップで操作します。
public static interface OnRecyclerViewItemClickListener {
void onItemClick(View view , DataModel data);
}
インターフェースを定義して、インターフェースを追加して、Adapterインターフェースを設定する方法:[java]view plincopy
private OnRecyclerViewItemClickListener mOnItemClickListener = null;
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
このインターフェースはどこに使いますか?下記のコードに示すように、私達はAdapterのためにOClikListener方法を実現します。[java]view plincopy
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener{
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
ViewHolder vh = new ViewHolder(view);
// View
view.setOnClickListener(this);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int i) {
viewHolder.mTextView.setText(datas.get(i).title);
// itemView Tag ,
viewHolder.itemView.setTag(datas.get(i));
}
...
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
// getTag
mOnItemClickListener.onItemClick(v,(DataModel)v.getTag());
}
}
...
}
これらの仕事を終えたら、Activityまたは他のところでRecyclerViewにプロジェクトを追加してイベントをクリックできます。MainActivityで:[java]view plincopy
mAdapter = new MyAdapter(getDummyDatas());
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new MyAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, DataModel data) {
//DO your fucking bussiness here!
}
});
上記のコードを完成したらRecyclerViewにプロジェクトを追加してクリックします。次にRecyclerViewがどのようにデータを追加して削除して画面に表示するかを確認します。削除データを追加以前はListViewの中で、データを修正したらAdapterのnotifyDataset Changeを使って画面を更新することができます。しかし、RecyclerViewにはもっと高級な使い方があります。
追加データ:[java]view plincopy
public void addItem(DataModel content, int position) {
datas.add(position, content);
notifyItemInserted(position); //Attention!
}
データを削除:[java]view plincopy
public void removeItem(DataModel model) {
int position = datas.indexOf(model);
datas.remove(position);
notifyItemRemoved(position);//Attention!
}
なお、RecyclerViewの追加削除はすべてデフォルトのアニメーション効果があり、効果がなければ下記のコードを追加できます。[java]view plincopy
mRecyclerView.setItemAnimator(newDefaultItemAnimator());
もちろんです。ご自分でアニメイトを定義してもいいです。