Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android RecyclerView固定页脚_Java_Android_Android Recyclerview_Footer_Drawerlayout - Fatal编程技术网

Java Android RecyclerView固定页脚

Java Android RecyclerView固定页脚,java,android,android-recyclerview,footer,drawerlayout,Java,Android,Android Recyclerview,Footer,Drawerlayout,过去几天,我一直在为我的recyclerview开发固定页脚,但到目前为止,我没有得到我预期的结果。我已经查看了现有的问题,但得到的结果与以前相同。似乎我仍然漏掉了一点,但我无法理解。。。因此,我在等待你的建议。谢谢 我希望页脚部分在recyclerview的底部保持粘性 draweradopter.java public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.DrawerViewHolder>

过去几天,我一直在为我的recyclerview开发固定页脚,但到目前为止,我没有得到我预期的结果。我已经查看了现有的问题,但得到的结果与以前相同。似乎我仍然漏掉了一点,但我无法理解。。。因此,我在等待你的建议。谢谢 我希望页脚部分在recyclerview的底部保持粘性

draweradopter.java

public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.DrawerViewHolder> {
// Class for view types.
private class VIEW_TYPES {
    public static final int Header = 0;
    public static final int Normal = 1;
    public static final int Footer = 2;
}

private ArrayList<DrawerItem> drawerMenuList;
private String userProfileName;
private String userProfileMail;
private Drawable userProfilePic;
private OnItemSelecteListener mListener;

public DrawerAdapter(ArrayList<DrawerItem> drawerMenuList, String name, String mail, Drawable profileImage) {
    this.drawerMenuList = drawerMenuList;
    this.userProfileMail = mail;
    this.userProfileName = name;
    this.userProfilePic = profileImage;
}

@Override
public DrawerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;
    if (viewType == VIEW_TYPES.Header) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.header, parent, false);
    } else if (viewType == VIEW_TYPES.Footer) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.footer, parent, false);
    } else {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_row, parent, false);
    }
    return new DrawerViewHolder(view, viewType);
}

@Override
public void onBindViewHolder(DrawerViewHolder holder, int position) {
    // If item's position 0 it's a header.
    if (position == 0) {
        holder.headerName.setText(userProfileName);
        holder.headerMail.setText(userProfileMail);
        holder.headerProfile.setImageDrawable(userProfilePic);
    } else if (position == 5) { // If position is 5 then it's footer.
        holder.headerName.setText("FOOTER");
    } else { // it's a menu item.
        holder.title.setText(drawerMenuList.get(position - 1).getTitle());
        holder.icon.setImageResource(drawerMenuList.get(position - 1).getIcon());
    }

}

@Override
public int getItemCount() {
    return drawerMenuList.size() + 1;
}

@Override
public int getItemViewType(int position) {
    if (position == 0) {
        return VIEW_TYPES.Header;
    } else if (position == 5) {
        return VIEW_TYPES.Footer;
    } else {
        return VIEW_TYPES.Normal;
    }
}


class DrawerViewHolder extends RecyclerView.ViewHolder {
    TextView title;
    TextView headerName;
    ImageView icon;
    TextView headerMail;
    ImageView headerProfile;

    public DrawerViewHolder(View itemView, int viewType) {
        super(itemView);

        if (viewType == VIEW_TYPES.Header) {
            headerName = (TextView) itemView.findViewById(R.id.header_name);
            headerMail = (TextView) itemView.findViewById(R.id.header_email);
            headerProfile = (ImageView) itemView.findViewById(R.id.circleView);
        } else if (viewType == VIEW_TYPES.Footer) {
            headerName = (TextView) itemView.findViewById(R.id.textView3);
        } else {
            title = (TextView) itemView.findViewById(R.id.title);
            icon = (ImageView) itemView.findViewById(R.id.icon);
        }
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mListener.onItemSelected(view, getAdapterPosition());
            }
        });

    }
}
// To set click listener.
public interface OnItemSelecteListener {
    void onItemSelected(View v, int position);
}

public void setOnItemClickLister(OnItemSelecteListener mListener) {
    this.mListener = mListener;
}
                            for (int i = 0; i < navMenuTitles.length; i++) {
                                Log.e("I", String.valueOf(i));
                                mDrawerItemList.add(new DrawerItem(navMenuTitles[i], navMenuIcons.getResourceId(i, -1)));
                            }
                            mDrawerItemList.add(new DrawerItem());

                            mRecyclerView = (RecyclerView) findViewById(R.id.drawerRecyclerView);
                            mDrawerAdapter = new DrawerAdapter(mDrawerItemList, logged_user.name, logged_user.email, draw_userImage);
                            mLinearLayoutManager = new CustomGridLayoutManager(HomeScreenActivity.this){
                                @Override
                                public boolean canScrollVertically() {
                                    return false;
                                }
                            };

                            mRecyclerView.setLayoutManager(mLinearLayoutManager);
                            mRecyclerView.setAdapter(mDrawerAdapter);
                            mDrawerLayout = (DrawerLayout) findViewById(R.id.DrawerLayout);
                            mDrawerToggle = new ActionBarDrawerToggle(HomeScreenActivity.this, mDrawerLayout, mToolbar, R.string.openDrawer, R.string.closeDrawer) {
                                @Override
                                public void onDrawerOpened(View drawerView) {
                                    super.onDrawerOpened(drawerView);
                                    // code here will execute once the drawer is opened( As I dont want anything happened whe drawer is
                                    // open I am not going to put anything here)
                                }

                                @Override
                                public void onDrawerClosed(View drawerView) {
                                    super.onDrawerClosed(drawerView);
                                    // Code here will execute once drawer is closed
                                }
                            }; // Drawer Toggle Object Made
                            mDrawerLayout.addDrawerListener(mDrawerToggle); // Drawer Listener set to the Drawer toggle
                            mDrawerToggle.syncState();               // Finally we set the drawer toggle sync State
                            mDrawerAdapter.setOnItemClickLister(new DrawerAdapter.OnItemSelecteListener() {
                                @Override
                                public void onItemSelected(View v, int position) {
                                    Log.e("CLICK", "You clicked at position: " + position);
                                }
                            });
public类DrawerAdapter扩展了RecyclerView.Adapter{
//类的视图类型。
私有类视图类型{
公共静态最终整数头=0;
公共静态最终int Normal=1;
公共静态最终整型页脚=2;
}
私有ArrayList抽屉列表;
私有字符串userProfileName;
私有字符串userProfileMail;
私有可提取用户配置文件;
私家侦探;
公共抽屉标识符(ArrayList抽屉数字列表、字符串名称、字符串邮件、可绘制的profileImage){
this.drawerMenuList=drawerMenuList;
this.userProfileMail=mail;
this.userProfileName=name;
this.userProfilePic=profileImage;
}
@凌驾
公共抽屉ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图;
if(viewType==视图类型.Header){
view=LayoutInflater.from(parent.getContext()).flate(R.layout.header,parent,false);
}else if(viewType==视图类型.Footer){
view=LayoutInflater.from(parent.getContext()).flate(R.layout.footer,parent,false);
}否则{
view=LayoutInflater.from(parent.getContext()).flate(R.layout.item_行,parent,false);
}
返回新的抽屉文件夹(视图、视图类型);
}
@凌驾
BindViewHolder上的公共无效(抽屉式衣架,内部位置){
//如果项目的位置为0,则为标题。
如果(位置==0){
holder.headerName.setText(userProfileName);
holder.headerMail.setText(userProfileMail);
holder.headerProfile.setImageDrawable(userProfilePic);
}否则,如果(position==5){//如果position是5,则它是页脚。
holder.headerName.setText(“页脚”);
}否则{//这是一个菜单项。
holder.title.setText(drawerMenuList.get(position-1.getTitle());
setImageResource(drawerMenuList.get(位置-1.getIcon());
}
}
@凌驾
public int getItemCount(){
返回DrumerNuList.size()+1;
}
@凌驾
public int getItemViewType(int位置){
如果(位置==0){
返回视图_TYPES.Header;
}否则如果(位置==5){
返回视图\ u TYPES.Footer;
}否则{
返回视图类型。正常;
}
}
类DroperViewHolder扩展了RecyclerView.ViewHolder{
文本视图标题;
文本视图标题名称;
图像视图图标;
TextView-headerMail;
ImageView头文件;
公共抽屉文件夹(视图项视图,int视图类型){
超级(项目视图);
if(viewType==视图类型.Header){
headerName=(TextView)itemView.findViewById(R.id.header\u name);
headerMail=(TextView)itemView.findViewById(R.id.header\u电子邮件);
headerProfile=(ImageView)itemView.findViewById(R.id.circleView);
}else if(viewType==视图类型.Footer){
headerName=(TextView)itemView.findViewById(R.id.textView3);
}否则{
title=(TextView)itemView.findViewById(R.id.title);
icon=(ImageView)itemView.findViewById(R.id.icon);
}
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
mListener.onItemSelected(视图,getAdapterPosition());
}
});
}
}
//要设置,请单击“侦听器”。
公共接口选择器{
已选择空视图(视图v,内部位置);
}
公共无效setOnItemClickLister(OnItemSelecteListener mListener){
this.mListener=mListener;
}
}

MainActivity.java

public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.DrawerViewHolder> {
// Class for view types.
private class VIEW_TYPES {
    public static final int Header = 0;
    public static final int Normal = 1;
    public static final int Footer = 2;
}

private ArrayList<DrawerItem> drawerMenuList;
private String userProfileName;
private String userProfileMail;
private Drawable userProfilePic;
private OnItemSelecteListener mListener;

public DrawerAdapter(ArrayList<DrawerItem> drawerMenuList, String name, String mail, Drawable profileImage) {
    this.drawerMenuList = drawerMenuList;
    this.userProfileMail = mail;
    this.userProfileName = name;
    this.userProfilePic = profileImage;
}

@Override
public DrawerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;
    if (viewType == VIEW_TYPES.Header) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.header, parent, false);
    } else if (viewType == VIEW_TYPES.Footer) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.footer, parent, false);
    } else {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_row, parent, false);
    }
    return new DrawerViewHolder(view, viewType);
}

@Override
public void onBindViewHolder(DrawerViewHolder holder, int position) {
    // If item's position 0 it's a header.
    if (position == 0) {
        holder.headerName.setText(userProfileName);
        holder.headerMail.setText(userProfileMail);
        holder.headerProfile.setImageDrawable(userProfilePic);
    } else if (position == 5) { // If position is 5 then it's footer.
        holder.headerName.setText("FOOTER");
    } else { // it's a menu item.
        holder.title.setText(drawerMenuList.get(position - 1).getTitle());
        holder.icon.setImageResource(drawerMenuList.get(position - 1).getIcon());
    }

}

@Override
public int getItemCount() {
    return drawerMenuList.size() + 1;
}

@Override
public int getItemViewType(int position) {
    if (position == 0) {
        return VIEW_TYPES.Header;
    } else if (position == 5) {
        return VIEW_TYPES.Footer;
    } else {
        return VIEW_TYPES.Normal;
    }
}


class DrawerViewHolder extends RecyclerView.ViewHolder {
    TextView title;
    TextView headerName;
    ImageView icon;
    TextView headerMail;
    ImageView headerProfile;

    public DrawerViewHolder(View itemView, int viewType) {
        super(itemView);

        if (viewType == VIEW_TYPES.Header) {
            headerName = (TextView) itemView.findViewById(R.id.header_name);
            headerMail = (TextView) itemView.findViewById(R.id.header_email);
            headerProfile = (ImageView) itemView.findViewById(R.id.circleView);
        } else if (viewType == VIEW_TYPES.Footer) {
            headerName = (TextView) itemView.findViewById(R.id.textView3);
        } else {
            title = (TextView) itemView.findViewById(R.id.title);
            icon = (ImageView) itemView.findViewById(R.id.icon);
        }
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mListener.onItemSelected(view, getAdapterPosition());
            }
        });

    }
}
// To set click listener.
public interface OnItemSelecteListener {
    void onItemSelected(View v, int position);
}

public void setOnItemClickLister(OnItemSelecteListener mListener) {
    this.mListener = mListener;
}
                            for (int i = 0; i < navMenuTitles.length; i++) {
                                Log.e("I", String.valueOf(i));
                                mDrawerItemList.add(new DrawerItem(navMenuTitles[i], navMenuIcons.getResourceId(i, -1)));
                            }
                            mDrawerItemList.add(new DrawerItem());

                            mRecyclerView = (RecyclerView) findViewById(R.id.drawerRecyclerView);
                            mDrawerAdapter = new DrawerAdapter(mDrawerItemList, logged_user.name, logged_user.email, draw_userImage);
                            mLinearLayoutManager = new CustomGridLayoutManager(HomeScreenActivity.this){
                                @Override
                                public boolean canScrollVertically() {
                                    return false;
                                }
                            };

                            mRecyclerView.setLayoutManager(mLinearLayoutManager);
                            mRecyclerView.setAdapter(mDrawerAdapter);
                            mDrawerLayout = (DrawerLayout) findViewById(R.id.DrawerLayout);
                            mDrawerToggle = new ActionBarDrawerToggle(HomeScreenActivity.this, mDrawerLayout, mToolbar, R.string.openDrawer, R.string.closeDrawer) {
                                @Override
                                public void onDrawerOpened(View drawerView) {
                                    super.onDrawerOpened(drawerView);
                                    // code here will execute once the drawer is opened( As I dont want anything happened whe drawer is
                                    // open I am not going to put anything here)
                                }

                                @Override
                                public void onDrawerClosed(View drawerView) {
                                    super.onDrawerClosed(drawerView);
                                    // Code here will execute once drawer is closed
                                }
                            }; // Drawer Toggle Object Made
                            mDrawerLayout.addDrawerListener(mDrawerToggle); // Drawer Listener set to the Drawer toggle
                            mDrawerToggle.syncState();               // Finally we set the drawer toggle sync State
                            mDrawerAdapter.setOnItemClickLister(new DrawerAdapter.OnItemSelecteListener() {
                                @Override
                                public void onItemSelected(View v, int position) {
                                    Log.e("CLICK", "You clicked at position: " + position);
                                }
                            });
for(int i=0;i<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/DrawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:elevation="7dp">

    <FrameLayout
        android:id="@+id/containerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
           android:id="@+id/drawerRecyclerView"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_alignParentTop="true"
           android:layout_gravity="left"
           android:background="#ffffff"
           app:reverseLayout="false"
           app:stackFromEnd="false" />

        <include layout="@layout/footer" />

    </RelativeLayout>

</android.support.v4.widget.DrawerLayout>
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
<include layout="@layout/header" />

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycleView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.5"
    tools:layout_height="0dp"
    tools:listitem="@layout/row" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="@dimen/footer_weight"
    android:padding="@dimen/extra_padding"
    android:paddingEnd="@dimen/small_padding"
    android:paddingLeft="@dimen/small_padding"
    android:paddingRight="@dimen/small_padding"
    android:paddingStart="@dimen/small_padding"
    android:text="@string/contact"
    android:textColor="@color/grey" />

 </LinearLayout>