GridView Gallery Spinner AutoCompleteTextView和ExpandableListView

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值