1、这篇博客参考http://blog.csdn.net/libaojian4444/article/details/52931971
2、不同的是列表采用的是recycle 和图片显示用的是Picasso Edittext 交换不会错乱等的完善
3、话不多说直接上代码 新建一个项目 添加recycleview 的依赖
compile'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile'com.squareup.picasso:picasso:2.3.2'
4、在 main.xml 创建 一个,添加recycle 的布局
<android.support.v7.widget.RecyclerView
android:layout_below="@+id/titleLayout"
android:id="@+id/line_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="80dp"
/>
5、定义两个布局一个是图片布局 item_add_pic.xml 和item_add_et.xml 分别放图片的和输入框的布局
6、1定义图文混合的adapter 适配器 PicAndFondAdapter。中主要通过 onCreateViewHolder 创建不同的布局,onBindViewHolder 对应显示不同的布局
getItemViewType 根据不同的类型显示不同的布局
public static final intTYPE_PIC=0xff01;//图片
public static final intTYPE_FOND=0xff02;//文本框
@Override
publicRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,intviewType) {
switch(viewType){
caseTYPE_PIC:
return newPicViewHolder(layoutInflater.inflate(R.layout.item_add_pic,parent,false));
caseTYPE_FOND:
return newEditViewHolder(layoutInflater.inflate(R.layout.item_add_et,parent,false));
}
return null;
}
6.2、其次是绑定和实现它们的点击时间删除直接从集合中移除那个对象,上移的话要注意两个问题改变文本框的输入值是在afterTextChanged,两个文本替换的时候会重复,所以在edit 的setOnTouchListener监听是否改变了输入框的值 改变了就重新设置值,替换的话只做文本交换
/*picAndFonds.remove(position);
notifyDataSetChanged();*/
6.3 、 最后就是新增插入 通过接口 PicAndFondInterface 实现 通过获取当前空控件的位置,在当前位置的后面增加一个对象
demo 地址 https://github.com/xiaoyongbing/PicAndFond1