一、activity_RecyclerView.xml
这个地方使用NestedScrollView
作为父节点,用来解决RecyclerView
的懒加载的问题,如果需要RecyclerView
的懒加载,则使用<LinearLayout>
作为父节点就可以了。
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.gigis21.dbxqonemap.activity.InfoActivity"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_recyclerview_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
二、activity_recycler_item.xml
单个item的布局文件,使用<androidx.appcompat.widget.AppCompatImageView>
标签来展示图片。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:id="@+id/cycle_item">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:id="@+id/cycle_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="info_text1:"
android:textSize="25dp"
>
</TextView>
<EditText
android:id="@+id/cycle_item_edit"
android:layout_width="match_parent"
android:layout_height="match_parent">
</EditText>
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
三、RecyclerView的适配器
在onBindViewHolder
方法中,遍历到最后一个的时候,把其他组件隐藏,设置最后一个item的宽和高,以便展示图片。
public class GalleryAdapter extends
RecyclerView.Adapter<GalleryAdapter.ViewHolder>
{
private LayoutInflater mInflater;
private List<String> mDatas;
public GalleryAdapter(Context context, List<String> datats)
{
mInflater = LayoutInflater.from(context);
mDatas = datats;
}
public class ViewHolder extends RecyclerView.ViewHolder
{
public ViewHolder(View arg0)
{
super(arg0);
}
EditText editText;
TextView textView;
AppCompatImageView ivContent;
RelativeLayout cycleItem;
}
@Override
public int getItemCount()
{
return mDatas.size();
}
/**
* 创建ViewHolder
*/
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
{
View view = mInflater.inflate(R.layout.activity_recycler_item,
viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.cycleItem = view.findViewById(R.id.cycle_item);
viewHolder.ivContent = view.findViewById(R.id.iv_content);
viewHolder.textView = (TextView) view
.findViewById(R.id.cycle_item_text);
viewHolder.editText = (EditText) view
.findViewById(R.id.cycle_item_edit);
return viewHolder;
}
/**
* 设置值
*/
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int i)
{
//遍历到最后一位修改RelativeLayout的宽高,以便展示图片
if (mDatas.size()-1 != i ){
viewHolder.textView.setText(mDatas.get(i));
list.add(viewHolder.editText.getText());
}else {
cameraBtn.setVisibility(View.VISIBLE);
ivContent = viewHolder.ivContent;
viewHolder.textView.setVisibility(View.GONE);
viewHolder.editText.setVisibility(View.GONE);
//为了展示照片,把最后一个item的宽高设置为300dp+300dp
viewHolder.cycleItem.getLayoutParams().width=600;
viewHolder.cycleItem.getLayoutParams().height=600;
//可以在这儿设置默认图片
//viewHolder.ivContent.setBackgroundResource(R.drawable.camera);
}
// if (i ==2 ){
// viewHolder.editText.setInputType(InputType.TYPE_CLASS_NUMBER);
// }
}
}