Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
Android在scrollview中扩展listview取决于值的数目_Android_Android Studio_Android Listview_Android Scrollview - Fatal编程技术网

Android在scrollview中扩展listview取决于值的数目

Android在scrollview中扩展listview取决于值的数目,android,android-studio,android-listview,android-scrollview,Android,Android Studio,Android Listview,Android Scrollview,我创建了一个由教师列表视图组成的应用程序,其中的数据是sqlite。当我单击其中一个列表视图时,将显示教师的个人资料,其中有一个学生列表。顺便说一句,老师的档案有一个卷轴,因为它有很多信息。我申请,因此listview将根据教师的学生人数自动扩展。但当我应用这个时,我得到了错误。我将在下面发布错误和我的代码 public class MainActivity extends AppCompatActivity { Button btnback, btnnext, btn

我创建了一个由教师列表视图组成的应用程序,其中的数据是sqlite。当我单击其中一个列表视图时,将显示教师的个人资料,其中有一个学生列表。顺便说一句,老师的档案有一个卷轴,因为它有很多信息。我申请,因此listview将根据教师的学生人数自动扩展。但当我应用这个时,我得到了错误。我将在下面发布错误和我的代码

    public class MainActivity extends AppCompatActivity {

        Button btnback, btnnext, btnbackprofile;
        TextView profileteacher;


        List<TeacherModel> GetAllTeacher;
        List<StudentModel> GetTeacherStudent;
        Context context = this;
        DatabaseHelper dbhelper;
        DatabaseHelper db = new DatabaseHelper(this);
        ListView lv,lv2;
        View TeacherListView,TeacherProfileView;

        int index = 0;
        private int currentPageIndex = 0;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            dbhelper = new DatabaseHelper(MainActivity.this);

            try{
                dbhelper.createDataBase();
            }
            catch(IOException e){
                e.printStackTrace();
            }
            try {
                dbhelper.openDataBase();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //Till here
            GetAllTeacher = dbhelper.getAllTeacher(index);
            lv = (ListView) findViewById(R.id.teacher_list);
            lv.setAdapter(new ViewAdapter());

            /****************************************************************************************
             *                                  TEACHER PROFILE
             ****************************************************************************************/
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view,final int i, long l) {

                    GetTeacherStudent = dbhelper.getTeacherStudent(GetAllTeacher.get(i).getid());
                    TeacherListView = findViewById(R.id.teacherlayout);
                    ViewGroup parent = (ViewGroup) TeacherListView.getParent();
                    parent.removeView(TeacherListView);
                    // inflate your profile view (or get the reference to it if it's already inflated)
                    TeacherProfileView = getLayoutInflater().inflate(R.layout.profile_teacher, parent, false);
                    // add it to the parent
                    parent.addView(TeacherProfileView);

                    ListView listView = (ListView)view.findViewById(R.id.profileStudentList);
                    setListViewHeightBasedOnChildren(listView);
                    listView.setAdapter(new ViewAdapter2());



                    btnbackprofile = (Button) findViewById(R.id.profileTeacherBack);

                    btnbackprofile.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            if (TeacherProfileView != null && TeacherProfileView.getParent() != null) {
                                // remove your profile view
                                ViewGroup parent = (ViewGroup) TeacherProfileView.getParent();
                                parent.removeView(TeacherProfileView);

                                // a reference to yourListView has to be saved somewhere; just get it

                                // add your listview to the parent
                                parent.addView(TeacherListView);
                            } else {
                            }


                        }
                    });

                    profileteacher = (TextView) findViewById(R.id.profileTeacherName);
                    profileteacher.setText(GetAllTeacher.get(i).getname());

                }
            });

            btnback = (Button) findViewById(R.id.teacherBack);
            btnnext = (Button) findViewById(R.id.teacherNext);

            btnback.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View convertView) {

                    currentPageIndex -= 20;
                    GetAllTeacher = dbhelper.getAllTeacher(currentPageIndex);
                    lv = (ListView) findViewById(R.id.teacher_list);
                    lv.setAdapter(new ViewAdapter());

                }

            });

            btnnext.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View convertView) {

                    currentPageIndex += 20;
                    GetAllTeacher = dbhelper.getAllTeacher(currentPageIndex);
                    lv = (ListView) findViewById(R.id.teacher_list);
                    lv.setAdapter(new ViewAdapter());

                }
            });



        }

/****************************************************************************************
         *                                      CODE IN THE LINK THAT I APPLY
         ****************************************************************************************/
        public static void setListViewHeightBasedOnChildren(ListView listView) {
            ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null)
                return;

            int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
            int totalHeight = 0;
            View view = null;
            for (int i = 0; i < listAdapter.getCount(); i++) {
                view = listAdapter.getView(i, view, listView);
                if (i == 0)
                    view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, AbsListView.LayoutParams.WRAP_CONTENT));

                view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
                totalHeight += view.getMeasuredHeight();
            }
            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
            listView.setLayoutParams(params);
        }


        /****************************************************************************************
         *                                      CUSTOM LIST
         ****************************************************************************************/
        public class ViewAdapter extends BaseAdapter {

            LayoutInflater mInflater;

            public ViewAdapter() {
                mInflater = LayoutInflater.from(context);
            }

            @Override
            public int getCount() {
                return GetAllTeacher.size();
            }

            @Override
            public Object getItem(int position) {
                return null;
            }

            @Override
            public long getItemId(int position) {
                return position;
            }

            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {

                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.item_teacher,null);
                }

                final TextView names = (TextView) convertView.findViewById(R.id.teacherlist_name);
                final TextView gender = (TextView) convertView.findViewById(R.id.teacherlist_gender);

                names.setText("Dr. "+GetAllTeacher.get(position).getname());
                gender.setText(GetAllTeacher.get(position).getgender());

                return convertView;
            }
        }

        public class ViewAdapter2 extends BaseAdapter {

            LayoutInflater mInflater;

            public ViewAdapter2() {
                mInflater = LayoutInflater.from(context);
            }

            @Override
            public int getCount() {
                return GetTeacherStudent.size();
            }

            @Override
            public Object getItem(int position) {
                return null;
            }

            @Override
            public long getItemId(int position) {
                return position;
            }

            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {

                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.item_teacherstudent,null);
                }

                final TextView names = (TextView) convertView.findViewById(R.id.teacherlist_name);

                names.setText(GetTeacherStudent.get(position).getstudent());

                return convertView;
            }
        }
    }
public类MainActivity扩展了AppCompatActivity{
按钮btnback、btnnext、btnbackprofile;
文本视图;
列出所有教师;
列出GetTeacherStudent;
上下文=这个;
数据库助手dbhelper;
DatabaseHelper db=新的DatabaseHelper(此);
ListView lv,lv2;
查看教师列表视图、教师档案视图;
int指数=0;
private int currentPageIndex=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbhelper=newdatabasehelper(MainActivity.this);
试一试{
dbhelper.createDataBase();
}
捕获(IOE异常){
e、 printStackTrace();
}
试一试{
dbhelper.openDataBase();
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//直到这里
GetAllTeacher=dbhelper.GetAllTeacher(索引);
lv=(ListView)findViewById(R.id.teacher\u列表);
lv.setAdapter(新的ViewAdapter());
/****************************************************************************************
*教师简介
****************************************************************************************/
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚空onItemClick(AdapterView AdapterView,视图视图,最终整数i,长l){
GetTeacherStudent=dbhelper.GetTeacherStudent(GetAllTeacher.get(i).getid());
TeacherListView=findViewById(R.id.teacherlayout);
ViewGroup parent=(ViewGroup)TeacherListView.getParent();
parent.removeView(TeacherListView);
//为纵断面图充气(如果已经充气,则获取其参考)
TeacherProfileView=GetLayoutFlater()。充气(R.layout.profile\u教师,家长,false);
//将其添加到父级
parent.addView(TeacherProfileView);
ListView=(ListView)view.findViewById(R.id.profileStudentList);
setListViewHeightBasedOnChildren(listView);
setAdapter(新的ViewAdapter2());
btnbackprofile=(按钮)findViewById(R.id.profileTeacherBack);
btnbackprofile.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(TeacherProfileView!=null&&TeacherProfileView.getParent()!=null){
//删除您的纵断面图
ViewGroup parent=(ViewGroup)TeacherProfileView.getParent();
parent.removeView(TeacherProfileView);
//必须将对ListView的引用保存在某个地方;只需获取它
//将listview添加到父级
parent.addView(TeacherListView);
}否则{
}
}
});
profileteacher=(TextView)findViewById(R.id.profileTeacherName);
profileteacher.setText(GetAllTeacher.get(i.getname());
}
});
btnback=(按钮)findViewById(R.id.teacherBack);
btnnext=(按钮)findViewById(R.id.teacherNext);
btnback.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图转换视图){
currentPageIndex-=20;
GetAllTeacher=dbhelper.GetAllTeacher(currentPageIndex);
lv=(ListView)findViewById(R.id.teacher\u列表);
lv.setAdapter(新的ViewAdapter());
}
});
btnnext.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图转换视图){
currentPageIndex+=20;
GetAllTeacher=dbhelper.GetAllTeacher(currentPageIndex);
lv=(ListView)findViewById(R.id.teacher\u列表);
lv.setAdapter(新的ViewAdapter());
}
});
}
/****************************************************************************************
*我应用的链接中的代码
****************************************************************************************/
公共静态无效setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
如果(listAdapter==null)
返回;
int desiredWidth=View.MeasureSpec.makeMeasureSpec(listView.getWidth(),View.MeasureSpec.UNSPECIFIED);
int totalHeight=0;
视图=空;
对于(int i=0;i public static void setListViewHeightBasedOnChildren() {
            ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null)
                return;
protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            dbhelper = new DatabaseHelper(MainActivity.this);

         listView = (ListView)findViewById(R.id.profileStudentList);
listView.setAdapter(new ViewAdapter2());
setListViewHeightBasedOnChildren(listView);