目录

​​一 ListView​​

​​二 RecyclerView​​

​​三 轮子推荐​​

​​3.1 BRVAH​​


一 ListView

以常被RecyclerView代替,用时遗忘可翻阅以下文章:


二 RecyclerView

adapter代码:

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder>{

private List<Fruit> mFruitList;

static class ViewHolder extends RecyclerView.ViewHolder {
View fruitView;
ImageView fruitImage;
TextView fruitName;

public ViewHolder(View view) {
super(view);
fruitView = view;
fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
fruitName = (TextView) view.findViewById(R.id.fruit_name);
}
}

public FruitAdapter(List<Fruit> fruitList) {
mFruitList = fruitList;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item, parent, false);
final ViewHolder holder = new ViewHolder(view);
holder.fruitView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getAdapterPosition();
Fruit fruit = mFruitList.get(position);
Toast.makeText(v.getContext(), "you clicked view " + fruit.getName(), Toast.LENGTH_SHORT).show();
}
});
holder.fruitImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getAdapterPosition();
Fruit fruit = mFruitList.get(position);
Toast.makeText(v.getContext(), "you clicked image " + fruit.getName(), Toast.LENGTH_SHORT).show();
}
});
return holder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Fruit fruit = mFruitList.get(position);
holder.fruitImage.setImageResource(fruit.getImageId());
holder.fruitName.setText(fruit.getName());
}

@Override
public int getItemCount() {
return mFruitList.size();
}

}

列表(数据源):

private List<Fruit> fruitList = new ArrayList<Fruit>();

activity中的代码:

常版本:

RecyclerView recyclerView=(RecyclerView)findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager=new LinearLayoutManager(this);//线性布局
recyclerView.setLayoutManager(layoutManager);
VegeAdapterSecond vegeAdapterSecond=new VegeAdapterSecond(vegetableList);
recyclerView.setAdapter(vegeAdapterSecond);

瀑布流:

initFruits();
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
StaggeredGridLayoutManager layoutManager = new
StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
FruitAdapter adapter = new FruitAdapter(fruitList);
recyclerView.setAdapter(adapter);

三 轮子推荐

3.1 ​​BRVAH​

详细可看作者文章:​​https://www.jianshu.com/p/b343fcff51b0​

先在 build.gradle(Project:XXXX) 的 repositories 添加:

allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}

然后在 build.gradle(Module:app) 的 dependencies 添加:

dependencies {
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
}

更新说明:​​https://github.com/CymChad/BaseRecyclerViewAdapterHelper/releases​

adapter:

public class HomeAdapter extends BaseQuickAdapter<HomeItem, BaseViewHolder> {
public HomeAdapter(int layoutResId, List data) {
super(layoutResId, data);
}

@Override
protected void convert(BaseViewHolder helper, HomeItem item) {
helper.setText(R.id.text, item.getTitle());
helper.setImageResource(R.id.icon, item.getImageResource());
// 加载网络图片
Glide.with(mContext).load(item.getUserAvatar()).crossFade().into((ImageView) helper.getView(R.id.iv));
}
}

设置adapter:

//--------------------------适配器--------------------------
//Adapter适配器初始化
recyclerView_forum.setLayoutManager(new LinearLayoutManager(getActivity()));
//设置列表默认动画效果
recyclerView_forum.setItemAnimator(new DefaultItemAnimator());
//绑定适配器
myBaseAdapter = new MyBaseAdapter(forum_list, getActivity());
recyclerView_forum.setAdapter(myBaseAdapter);
//列表点击事件
myBaseAdapter.setOnItemClickLitener(new MyBaseAdapter.OnItemClickLitener() {
@Override
public void onItemClick(View view, int position) {
LogUtils.w("common帖子的点击事件:",
"点击的position:" + position);
Intent intent = new Intent(getActivity(), ForumArticleActivity.class);
intent.putExtra("帖子对象", forum_list.get(position));
ActivityUtils.startActivity(intent);
}
});
//--------------------------适配器--------------------------