安卓开发---07 Android列表组件训练_inneritemonclicklistener,“金三银四”春招指南

74 阅读3分钟
  • Spinner 下拉框
  • ListView 列表
  • Adapter自定义 适配器
  • GridView 网格视图

1.spinner下拉框

  • 创建string-array加载数据
    在res文件夹下创建array.xml
<string-array name="sp">
        <item>ps</item>
        <item>h5</item> 
</string-array>
<Spinner
           android:layout_width="wrap\_content"
           android:layout_height="wrap\_content"
           android:spinnerMode="dialog|dropdown"
           android:entries="@array/sp"


 android:spinnerMode="dialog"表示Spinner的样式是dialog
 android:prompt可以设置dialog的标题(注意必须在string资源下引用,
 不然程序会崩掉)      ></Spinner>


监听函数:setOnItemSelectedListener
获取值函数:getSelectedItem()

  • 通过适配器来填充参数
    编写myadapter适配器继承baseadapter 关键的getView方法
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=LayoutInflater.from(context);
        View v=inflater.inflate(R.layout.sp_layout,null);
            TextView pername=v.findViewById(R.id.pername);
            TextView perage=v.findViewById(R.id.perage);
            pername.setText(list.get(position).getName());
            perage.setText(list.get(position).getAge()+"");
        return v;
}


主界面:

sp = findViewById(R.id.sp);
        List<Person> pers=new ArrayList<Person>(); //准备数据
        pers.add(new Person("小红",10));
        pers.add(new Person("小明",12));
        pers.add(new Person("小军",13));
        MyAdapter myAdapter=new MyAdapter(pers,this);//准备适配器
        sp.setAdapter(myAdapter);


2.ListView 列表及adapter适配器

  • Android自带的适配器
private String data[] =
 {"aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd"};//假数据
ListView listView = (ListView) findViewById(R.id.listview);//在视图中找到ListView
        ArrayAdapter<String> adapter 
= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);//新建并配置ArrayAapeter
        listView.setAdapter(adapter);


  • 自定义适配器 继承于baseadapter
@Override
    public int getCount() {//数据长度
        return list.size();
    }
    @Override
    public Object getItem(int position) { //某一个数据是什么
        return list.get(position);
    }
    @Override
    public long getItemId(int position) { //当前的数据索引
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=LayoutInflater.from(context);
        View v=inflater.inflate(R.layout.sp_layout,null);
            TextView pername=v.findViewById(R.id.pername);
            TextView perage=v.findViewById(R.id.perage);
            pername.setText(list.get(position).getName());
            perage.setText(list.get(position).getAge()+"");
        return v;
}


适配优化viewholder

if (convertView == null) {  
viewHolder = new ViewHolder();  
convertView = LayoutInflater.from(mContext).inflate(R.layout.item,  null);  
            viewHolder.bt1 = (Button) convertView.findViewById(R.id.bt1);  
            viewHolder.bt2 = (Button) convertView.findViewById(R.id.bt2);  
            viewHolder.tv = (TextView) convertView.findViewById(R.id.tv);  
            convertView.setTag(viewHolder);  
        } else {  
            viewHolder = (ViewHolder) convertView.getTag();  
        }  
        //绑定数据
        return convertView;  
    }  


Listview 点击事件setOnItemClickListener
及长按事件setOnItemLongClickListener 返回true可以拦截点击事件

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。