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
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);//将适配器添加到最终的界面上
}