v7包提供了优化的后的ListView(RecyclerView),这篇文章主要是讲一下这个新控件的使用方法,不多说直接上代码
activity代码
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
public class MainActivity extends AppCompatActivity{
private RecyclerView recyler_listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 拿到RecyclerView
recyler_listview = (RecyclerView)findViewById(R.id.recyler_listview);
//设置LinearLayoutManager
//recyler_listview.setLayoutManager(new LinearLayoutManager(this));
// recyler_listview.setLayoutManager(new GridLayoutManager(this, 3));
recyler_listview.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
//设置ItemAnimator
recyler_listview.setItemAnimator(new DefaultItemAnimator());
// 设置固定大小
recyler_listview.setHasFixedSize(false);
RecyAdapter recyAdapter = new RecyAdapter(this, list);
recyler_listview.setAdapter(recyAdapter);
}
}
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.ViewHolder> {
private Context mContext;
private List<ItemBean> mData;
DisplayImageOptions options = new DisplayImageOptions.........
public RecyAdapter(Context mContext, List<ItemBean> mData) {
this.mContext = mContext;
this.mData = mData;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 给ViewHolder设置布局文件
View v = LayoutInflater.from(mContext).inflate(R.layout.itemlayout, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// 给ViewHolder设置元素
holder.textView.setText(mData.get(position).text);
holder.textView.setHeight(50 + new Random().nextInt(100));
// holder.card_view.setPadding(0, new Random().nextInt(100), 0, new Random().nextInt(100));
// holder.card_view.setMinimumHeight(25 + new Random().nextInt(25));
// int resId = mContext.getResources().getIdentifier("img_"+i, "drawable", mContext.getPackageName());
ImageLoader.getInstance().displayImage(mData.get(position).url, holder.item_image, options);
}
// 返回数据总数
@Override
public int getItemCount() {
return mData == null ? 0 : mData.size();
}
// 自定义ViewHolder
public static class ViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
private ImageView item_image;
private CardView card_view;
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView)itemView.findViewById(R.id.item_text);
item_image = (ImageView)itemView.findViewById(R.id.item_image);
card_view = (CardView) itemView.findViewById(R.id.card_view);
}
}
}
刚刚学习接触,如有不足,欢迎指正。。。