Android记录3--ExpandableListView使用+获取SIM卡状态信息

android:layout_height=“18dp”

android:layout_centerInParent=“true”

android:contentDescription=“@string/empty”

android:scaleType=“fitXY”

android:src=“@drawable/synchronizing” />

<ImageButton

android:id=“@+id/imgBtn_Search”

android:layout_width=“@dimen/banner_btn_width”

android:layout_height=“wrap_content”

android:layout_alignParentRight=“true”

android:background=“@drawable/banner_btn_bg_selector”

android:contentDescription=“@string/search”

android:src=“@drawable/search” />

<RelativeLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent” >

<ExpandableListView

android:id=“@+id/list_Inbox”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:cacheColorHint=“@color/transparent”

android:childDivider=“@color/transparent”

android:divider=“@drawable/list_divider”

android:fastScrollEnabled=“true”

android:groupIndicator=“@color/transparent”

android:listSelector=“@color/transparent”

android:scrollbars=“none” />

子列表项

/SIM_Card_Demo/res/layout/child_item.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical”

android:background=“@drawable/item_bg”

<TextView

android:id=“@+id/textView1”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:textColor=“#ffff0000”

android:text=“SIM卡状态:” />

<TextView

android:id=“@+id/tv_sim_status”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:textColor=“#ff00ff00”

android:text=“@string/app_name” />

自定义适配器(重要)

/SIM_Card_Demo/src/com/wwj/sim/demo/InboxListAdapter.java

package com.wwj.sim.demo;

import java.util.List;

import java.util.Map;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseExpandableListAdapter;

import android.widget.ExpandableListView;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.TextView;

/**

  • 自定义下列列表适配器

  • @author wwj

  • 注:要继承BaseExpandableListAdpater

*/

public class InboxListAdapter extends BaseExpandableListAdapter {

private Inbox inbox;

private ExpandableListView list_Inbox;

private List<Map<String, Object>> groupList;

private List<Map<String, String>> childList;

private LayoutInflater inflater;

/**

  • 构造函数

  • @param inbox

  •        Activity对象引用
    
  • @param list_Inbox

  •        下拉列表对象引用
    
  • @param data

  •        数据
    

*/

public InboxListAdapter(Inbox inbox, ExpandableListView list_Inbox,

List<Map<String, Object>> groupList,

List<Map<String, String>> childList) {

super();

this.inbox = inbox;

this.list_Inbox = list_Inbox;

this.groupList = groupList;

this.childList = childList;

inflater = LayoutInflater.from(inbox);

}

/**

  • @author wwj

*/

private class GroupViewHolder {

ImageButton imgBtn_Photo;

TextView tv_name;

TextView tv_number;

TextView tv_details;

ImageView img_status;

public GroupViewHolder(View convertView) {

imgBtn_Photo = (ImageButton) convertView

.findViewById(R.id.imgBtn_Photo);

img_status = (ImageView) convertView.findViewById(R.id.img_Status);

tv_details = (TextView) convertView.findViewById(R.id.text_Details);

tv_name = (TextView) convertView.findViewById(R.id.text_Name);

tv_number = (TextView) convertView.findViewById(R.id.text_Number);

// 这个是防止图片聚焦,造成列表不能点击

imgBtn_Photo.setFocusable(false);

}

}

private class ChildViewHolder {

TextView tv_sim_status;

public ChildViewHolder(View converView) {

tv_sim_status = (TextView) converView

.findViewById(R.id.tv_sim_status);

}

}

@Override

public Object getChild(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public long getChildId(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public View getChildView(int groupPosition, int childPosition,

boolean isLastChild, View converView, ViewGroup parent) {

final ChildViewHolder childViewHolder;

if (converView == null) {

converView = inflater.inflate(R.layout.child_item, null);

childViewHolder = new ChildViewHolder(converView);

converView.setTag(childViewHolder);

} else {

childViewHolder = (ChildViewHolder) converView.getTag();

}

childViewHolder.tv_sim_status.setText(childList.get(childPosition)

.get(“tv_sim_status”));

return converView;

}

@Override

public int getChildrenCount(int groupPosition) {

return childList.size();

}

@Override

public Object getGroup(int groupPosition) {

return groupList.get(groupPosition);

}

@Override

public int getGroupCount() {

return groupList.size();

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent) {

final GroupViewHolder groupViewHolder;

if (convertView == null) {

convertView = inflater.inflate(R.layout.group_item, null);

groupViewHolder = new GroupViewHolder(convertView);

convertView.setTag(groupViewHolder);

} else {

groupViewHolder = (GroupViewHolder) convertView.getTag();

}

groupViewHolder.img_status.setImageResource(R.drawable.mail_status_new);

groupViewHolder.tv_name.setText(groupList.get(groupPosition)

.get(“username”).toString());

groupViewHolder.tv_number.setText(groupList.get(groupPosition)

.get(“number”).toString());

groupViewHolder.tv_details.setText(groupList.get(groupPosition)

.get(“detail”).toString());

groupViewHolder.imgBtn_Photo

.setImageResource(R.drawable.contact_photo_default);

return convertView;

}

@Override

public boolean hasStableIds() {

return false;

}

@Override

public boolean isChildSelectable(int arg0, int arg1) {

return false;

}

}

/SIM_Card_Demo/src/com/wwj/sim/demo/Inbox.java

package com.wwj.sim.demo;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.telephony.TelephonyManager;

import android.widget.ExpandableListView;

public class Inbox extends Activity {

public ExpandableListView list_Inbox; //下拉List控件

public InboxListAdapter adapter;

private TelephonyManager telephonyManager; //用来获取电话的一些信息

List<Map<String, Object>> groupList;

List<Map<String, String>> childList;

String sim_status;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.inbox);

sim_status = readSIMCard();

getData();

//找到这个控件

list_Inbox = (ExpandableListView) findViewById(R.id.list_Inbox);

list_Inbox.setAdapter(new InboxListAdapter(Inbox.this, list_Inbox, groupList, childList));

list_Inbox.setOnGroupExpandListener(new OneListItemExpandListener(list_Inbox));

}

void getData() {

groupList = new ArrayList<Map<String,Object>>();

Map<String, Object> groupMap = new HashMap<String, Object>();

groupMap.put(“username”, “张三”);

groupMap.put(“number”, “44440011”);

groupMap.put(“detail”, “4秒 2013-08-06 13:08”);

groupList.add(groupMap);

groupMap = new HashMap<String, Object>();

groupMap.put(“username”, “李四”);

groupMap.put(“number”, “44440012”);

groupMap.put(“detail”, “6秒 2013-08-06 13:09”);

groupList.add(groupMap);

groupMap = new HashMap<String, Object>();

groupMap.put(“username”, “王五”);

groupMap.put(“number”, “44440013”);

groupMap.put(“detail”, “5秒 2013-08-06 13:10”);

groupList.add(groupMap);

childList = new ArrayList<Map<String,String>>();

Map<String, String> childMap1 = new HashMap<String, String>();

childMap1.put(“tv_sim_status”, sim_status);

childList.add(childMap1);

}

public String readSIMCard() {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结

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

我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

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

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

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

最后,赠与大家一句话,共勉!

战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-Edv0bhLG-1711741176505)]

总结

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

[外链图片转存中…(img-0T6RrMPj-1711741176506)]

我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

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

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

[外链图片转存中…(img-aeYi5iLG-1711741176506)]

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

最后,赠与大家一句话,共勉!

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值