GridView Gallery Spinner AutoCompleteTextView和ExpandableListView

来源:互联网 发布:融资租赁 知乎 编辑:程序博客网 时间:2024/05/16 06:14

GridView

GridView 与ListView类似,是用来显示图片,用的是类似于九宫格的形式来显示的。
同样,GridView包括两个界面,一个是GridView的布局,另一个是GridView内部每个界面的布局。包括一个实体类,一个适配器,和一个Activity。

package com.example2.administrator.mygridviewapplication.adapter;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example2.administrator.mygridviewapplication.R;import com.example2.administrator.mygridviewapplication.model.Student;import java.util.List;/** * Created by Administrator on 2015/8/26. */public class MyGridViewAdapter extends BaseAdapter {    private LayoutInflater mInflater;    public MyGridViewAdapter(List<Student> mStudent, LayoutInflater mInflater) {        this.mStudent = mStudent;        this.mInflater = mInflater;    }    private List<Student> mStudent;    @Override    public int getCount() {        return mStudent.size();    }    @Override    public Object getItem(int position) {        return position;    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Student student=mStudent.get(position);        ViewHolder viewHolder=null;        if(convertView==null){            convertView=mInflater.inflate(R.layout.activity_gridview_inner,null);            viewHolder=new ViewHolder();            viewHolder.textView= (TextView) convertView.findViewById(R.id.text_gridview);            viewHolder.imageView= (ImageView) convertView.findViewById(R.id.image_gridview);            convertView.setTag(viewHolder);        }else {            viewHolder= (ViewHolder) convertView.getTag();        }        viewHolder.textView.setText(student.getName());        viewHolder.imageView.setImageResource(student.getImg());        return convertView;    }    class ViewHolder{        TextView textView;        ImageView imageView;    }}

这是GridView的适配器,用来将数据和界面布局想结合
在Activity中主要进行GridView的主界面的初始化,LayoutInflater的声明初始化,然后初始化数据,将数据和Layout和数据在合适的适配器的作用下进行整合加入到GridView中。就完成了。重要的参考ListView相关内容。

Gallery组件主要用于横向显示图像列表,与GridView和ListView一样,唯一不同的就是Gallery中只用到了一个Layout,所有图片内容都在横向图像列表中显示,而不需要吧某些布局加入到一个已制定好的View中。

Spinner

Spinner表示的是带有下拉菜单的一个控件

package com.example2.administrator.mygridviewapplication;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;/** * Created by Administrator on 2015/8/26. */public class SpinnerActivity extends Activity {    private Spinner mSpinner;    private String []mData={"李明","李刚","李博","view_button",            "view_text","view_check","activity_main","activity_second","activity_third","view_check","activity_main","activity_second","activity_third"};    private ArrayAdapter<String >mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_spiner);        mSpinner= (Spinner) findViewById(R.id.spinner);        mAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,mData);        mSpinner.setAdapter(mAdapter);    }}

这里其实跟ListView和GridView类似,但是这里使用的不是自定义的适配器,而是安卓自带的简单的一个适配器,所以简单了许多,但是思想都一样。

AutoCompleteTextView

这是一个可以自动搜索匹配与输入内容想关联的数据

package com.example2.administrator.mygridviewapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;import static com.example2.administrator.mygridviewapplication.R.id.autocompleteview;/** * Created by Administrator on 2015/8/26. */public class AutoTextViewActivity extends Activity{    private AutoCompleteTextView mAutoTextView;    private String []mData={"李明","李刚","李博","layout_line","layout_relitive","layout_absolute","view_button",            "view_text","view_check","activity_main","activity_second","activity_third"};;    private ArrayAdapter<String> mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_autotextview);        mAutoTextView = (AutoCompleteTextView) findViewById(autocompleteview);        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mData);        mAutoTextView.setAdapter(mAdapter);    }}

跟Spinner相类似,用到的适配器也是安卓提供的ArrayAdapter。

ExpandableListView

这是一个相当于在ListView中添加了一个ListView的结果,即ListView中每个View还有自己的View
这里主要是改一下适配器即可,然后数据的初始化也要花一点心思
数据的初始化:

 private void initClazz() {        mClazzs=new ArrayList<>();        Clazz clazz1=new Clazz("1班","2015001");        List<Student> students1=new ArrayList<>();        students1.add(new Student("张三","201500101","男","20"));        students1.add(new Student("李四","201500102","男","24"));        students1.add(new Student("王五","201500103","nv","21"));        students1.add(new Student("赵六","201500104","男","22"));        clazz1.setStudents(students1);        Clazz clazz2=new Clazz("2班","2015002");        List<Student> students2=new ArrayList<>();        students2.add(new Student("张三","201500201","男","20"));        students2.add(new Student("李四","201500202","女","24"));        students2.add(new Student("王五","201500203","女","21"));        students2.add(new Student("赵六","201500204","男","22"));        clazz2.setStudents(students2);

适配器

package com.example2.administrator.mygridviewapplication.adapter;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;import com.example2.administrator.mygridviewapplication.R;import com.example2.administrator.mygridviewapplication.model.Clazz;import com.example2.administrator.mygridviewapplication.model.Student;import java.util.List;/** * Created by Administrator on 2015/8/26. */public class MyExpandListViewAdapter extends BaseExpandableListAdapter {    private List<Clazz> mClazz;    private LayoutInflater mInflater;    public MyExpandListViewAdapter(List<Clazz> mClazz, LayoutInflater mInflater) {        this.mClazz = mClazz;        this.mInflater = mInflater;    }    @Override    public int getGroupCount() {        return mClazz.size();    }    @Override    public int getChildrenCount(int groupPosition) {        return mClazz.get(groupPosition).getStudents().size();    }    @Override    public Object getGroup(int groupPosition) {        return groupPosition;    }    @Override    public Object getChild(int groupPosition, int childPosition) {        return childPosition;    }    @Override    public long getGroupId(int groupPosition) {        return groupPosition;    }    @Override    public long getChildId(int groupPosition, int childPosition) {        return childPosition;    }    @Override    public boolean hasStableIds() {        return false;    }    @Override    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {        Clazz clazz=mClazz.get(groupPosition);        ViewHolder1 viewHolder1=null;        if (convertView==null){            convertView=mInflater.inflate(R.layout.activity_expandlistview_clazz,null);            viewHolder1=new ViewHolder1();            viewHolder1.textView_clazzname= (TextView) convertView.findViewById(R.id.text_clazz_clazzname);            viewHolder1.textView_clazznum= (TextView) convertView.findViewById(R.id.text_clazz_clazznum);            viewHolder1.textView_clazzstudentsize= (TextView) convertView.findViewById(R.id.text_clazz_clazzstudentsize);            convertView.setTag(viewHolder1);        }else{            viewHolder1= (ViewHolder1) convertView.getTag();        }        viewHolder1.textView_clazzname.setText(clazz.getClazzName());        viewHolder1.textView_clazznum.setText(clazz.getClazzNum());        viewHolder1.textView_clazzstudentsize.setText(""+clazz.getStudents().size());        return convertView;    }    class ViewHolder1{        TextView textView_clazzname;        TextView textView_clazznum;        TextView textView_clazzstudentsize;    }    @Override    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {        Clazz clazz=mClazz.get(groupPosition);        List<Student> students=clazz.getStudents();        Student student=students.get(childPosition);        ViewHolder2 viewHolder2=null;        if (convertView==null){            convertView=mInflater.inflate(R.layout.activity_expandlistview_student,null);            viewHolder2=new ViewHolder2();            viewHolder2.textView_studentname= (TextView) convertView.findViewById(R.id.text_student_studentname);            viewHolder2.textView_studentnum= (TextView) convertView.findViewById(R.id.text_student_studentnum);            viewHolder2.textView_studentsex= (TextView) convertView.findViewById(R.id.text_student_studentsex);            viewHolder2.textView_studentage= (TextView) convertView.findViewById(R.id.text_student_studentage);        }else{            viewHolder2= (ViewHolder2) convertView.getTag();        }        viewHolder2.textView_studentname.setText(student.getName());        viewHolder2.textView_studentnum.setText(student.getNum());        viewHolder2.textView_studentsex.setText(student.getSex());        viewHolder2.textView_studentage.setText(student.getAge());        return convertView;    }    class ViewHolder2{        TextView textView_studentname;        TextView textView_studentnum;        TextView textView_studentsex;        TextView textView_studentage;    }    @Override    public boolean isChildSelectable(int groupPosition, int childPosition) {        return false;    }}

在这里只是对View和其下的子View都进行了操作。
这里介绍一下这几种控件的基本思想

super.onCreate(savedInstanceState);setContentView(R.layout.activity_expandlistview);mExListView= (ExpandableListView) findViewById(R.id.expandablelistview);//界面的初始化initClazz();//数据的初始化mInflater=getLayoutInflater();//创建Layout的构造器mAdapter=new MyExpandListViewAdapter(mClazzs,mInflater);//适配器的初始化,传入数据和布局两个参数mExListView.setAdapter(mAdapter);//将适配器添加到最终的界面上    }
0 0
原创粉丝点击