-
Notifications
You must be signed in to change notification settings - Fork 22
Home
radishwu edited this page Apr 17, 2016
·
1 revision
RecyclerView 及 Adapter 的封装
创建布局文件。
例:
<com.youzan.titan.TitanRecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/titan_recycler_view"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
使用QuickAdapter。
mAdapter = new QuickAdapter<String>(R.layout.text_item, mData) {
@Override
public void bindView(AutoViewHolder holder, int position, String model) {
holder.getTextView(R.id.text_item_textview).setText("0".equals(model) ? attachActivity.getString(R.string.close) : model + attachActivity.getString(R.string.people));
}
};
mAttackView.addItemDecoration(new AttackHorizontalDivider.Builder(attachActivity).colorResId(R.color.light_theme_separate_line).build());
mAttackView.setAdapter(mAdapter);
mAttackView.setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
@Override
public void onItemClick(RecyclerView recyclerView, View view, final int position, long l) {
DialogUtil.showDialog(attachActivity, R.string.text_notice, R.string.confirm, new DialogUtil.OnClickListener() {
@Override
public void onClick() {
//TODO
}
}, false);
}
});
使用继承TitanAdapter。
public class ItemsAdapter extends TitanAdapter<DemoItem> {
@Override
protected RecyclerView.ViewHolder createVHolder(ViewGroup parent, int viewType) {
return new NormalTextViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text, parent, false), this);
}
@Override
protected void showItemView(RecyclerView.ViewHolder holder, int position) {
((NormalTextViewHolder) holder).mTextView.setText(mData.get(position).title);
}
@Override
public long getAdapterItemId(int position) {
return 0;
}
public static class NormalTextViewHolder extends RecyclerView.ViewHolder {
TextView mTextView;
ItemsAdapter mAdapter;
NormalTextViewHolder(View view, ItemsAdapter adapter) {
super(view);
mTextView = (TextView) view.findViewById(R.id.text_view);
mAdapter = adapter;
}
}
}
继承TitanAdapter,调用
mTitanRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mAdapter = new ItemsAdapter();
mAdapter.setData(mData);
mTitanRecyclerView.setAdapter(mAdapter);
mTitanRecyclerView.setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
@Override
public void onItemClick(RecyclerView recyclerView, View view, int position, long id) {
Log.d("NormalTextViewHolder", "onClick--> position = " + position);
DemoItem item = mAdapter.getItem(position);
if (null == item) {
return;
}
if (position < 9) {
Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra("position", position);
intent.putExtra("title", item.title);
getActivity().startActivity(intent);
} else {
Intent intent = new Intent(getContext(), SelectActivity.class);
intent.putExtra("position", position);
intent.putExtra("title", item.title);
getActivity().startActivity(intent);
}
}
});