仅供参考学习 借鉴了部分网络大神。 如果侵 删。
Android 7.0已经出了,感觉自己还在以前的技术上徘徊,上班就越来越懒,用到了才会去查,需要学的还有很多。
Android 5.0 提供了RecyclerView和cardView 两个 新的控件。
recycleView 简单实用 鸿洋真大神
实现一个简单地图片切换 Grallery 效果
效果图
以前listview的写法:
![Upload Paste_Image.png failed. Please try again.]
1. RecyclerView
基本写法:
public class GalleryAdapter extends
RecyclerView.Adapter
{
private LayoutInflater mInflater;
private List mDatas;
public GalleryAdapter(Context context, List datats)
{
mInflater = LayoutInflater.from(context);
mDatas = datats;
}
public static class ViewHolder extends RecyclerView.ViewHolder
{
public ViewHolder(View arg0)
{
super(arg0);
}
ImageView mImg;
TextView mTxt;
}
@Override
public int getItemCount()
{
return mDatas.size();
}
/**
* 创建ViewHolder
*/
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
{
View view = mInflater.inflate(R.layout.activity_index_gallery_item,
viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.mTxt= (TextView) view
.findViewById(R.id.id_index_gallery_item_text);
viewHolder.mImg = (ImageView) view
.findViewById(R.id.id_index_gallery_item_image);
return viewHolder;
}
/**
* 设置值
*/
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int i)
{
viewHolder.mImg.setImageResource(mDatas.get(i));
viewHolder.mTxt.setText("XXXX");
}
代码中:
//得到控件
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview_horizontal);
//设置布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
mRecyclerView.setLayoutManager(linearLayoutManager);
//设置适配器
mAdapter = new GalleryAdapter(this, mDatas);
mRecyclerView.setAdapter(mAdapter);
RecycleView需要自己去实现点击事件: 采用adapter去回调
public interface OnItemClickLitener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
private OnItemClickLitener mOnItemClickLitener;
public void setOnItemClickListener(OnItemClickLitener mOnItemClickLitener)
{
this.mOnItemClickLitener = mOnItemClickLitener;
}
在onBindViewHolder中实现点击单个事件。
@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {
holder.mCusName.setText("小王");
if (mOnItemClickLitener != null) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemClick(holder.itemView, pos);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
return false;
}
});
}
}
Activity中adapter中实现单个点击事件:
mAdapter.setOnItemClickLitener(new OnItemClickLitener() {
@Override public void onItemClick(View view, int position) {
Toast.makeText(HomeActivity.this, position + " click", Toast.LENGTH_SHORT).show();
}
@Override public void onItemLongClick(View view, int position) {
Toast.makeText(HomeActivity.this, position + " long click", Toast.LENGTH_SHORT).show(); mAdapter.removeData(position);
}
});
2.CardView
布局类似FrameLayout,但是加了很多特效:卡片的边框、阴影,duang,很酷、很炫。
基本写法:
card_view:cardBackgroundColor="@color/cardview_dark_background" card_view:cardCornerRadius="5dp"
注意要使用card_view命名空间
设置CardView的背景颜色和外围的圆角大小
3.结合使用实现:
知乎类的 界面:
参考学习: 超级棒
http://www.mamicode.com/info-detail-841663.html