Android
有限窗体内 展示大量数据的控件
常见:
ListView:最常用
GridView 多行多列
Spinner
AutoComponentTextView
用法:
1:创建一个高级控件 <ListView>
2:数据源 List []
3:适配器 展示数据
ArrayAdapter<String> 一行文字
ListView:
代码:
Java代码:
高级控件
1:ListView
2:GridView
3:Spinner
4:AutoComponentTextView
5:RecyclerView
1:初始化控件
2:数据源 List<> []
3:适配器
ArrayAdapter 1:context XXX.this,布局(自己R.layout.xxx/自带android.R.layout.xxx),数据);
SimpleAdapter (1:上下文,数据源List<? extends Map<String,Object>>,布局R.layout.xxx,String[] int[])
线程 后台 请求数据
1:网络权限
2:开启一个子线程
new Thread(new Runnable{
@Override
run(){
//耗时操作
1:URL url = new URL("http://xxx:8080/")
2:InputStream inputStream = url.openStream();
//文字 字符流 图片 音频视频 字节流
3:inputStream--->字符流
通信主线程
runonUiThread(){
run(){
.setText
.setAdapter
.setImageResurce
//弹框
//吐司
}
}
}
})
1:地址
servlet-mapping
servlet名字
/MyServlet
ip:8080/项目名字/MyServlet?name=zhangsan&pwd=2344
2:doPost doGet doPost()
get: ?name=123&pwd=124
post 隐藏
3:字符编码 中文乱码
utf-8 gbk ?
4:手机测试
同一个局域网
数据格式: json
xml <map>fdsadfodsaj<map>
text
html <font color="green">登陆成功</font> html
json
{"name":"value"}
["","",""]
解析数据
JsonObject:
GSON 解析数据
1:拿到数据 //R.xxx.xxx
assets:流
总结:
1:网络请求
URL url
.openStream()
流
2:创建assets:
数据 图片
InputStream -->BufferReader
Json:
解析:
{} JsonObject []JsonArray JsonArray fori
实体类:
ArrayAdapter × List<String>
SimpleAdapter × List<Map>
BaseAdapter
List<Object>
4个
1:getCount():数量
2:getItem() :条目
3:getItemId :位置
4:getView() :视图
①找到布局 布局转换器 LayoutInftener.from().inflate(R.layout.xxx) -->View
②View.findviewById
③赋值
④返回View
BaseAdapter
1:类 继承 BaseAdapter
4个重写方法
getView
1:布局 转化成View
2:View.findviewById()
3:赋值
4:返回View
条目每一个控件的点击事件
Adapter中设置点击事件
自定义弹框
View = R.layout.xxx
new AlertDialog.Builder(Context ).
.setView(View)
//.setTitle().setMessage()
show();
头布局 尾布局
1:ListView mListView.addHeaderView(View) .addFooterView(View)
BaseAdapter
4个方法
getView()
ListView
GridView:
多个条目
Spinner
AutoCompleteTextView
Gallery:画廊
RecyclerView
1:初始化控件
2:找到数据源
3:适配器
传值:序列化:可存储 可传递的对象
BaseAdapter 优化
1:class ViewHolder {
//缓冲池
//控件 TextView ImageView ...
}
2:getView方法中 判断convertView==null
初始化
1:new ViewHolder
2:找到布局 布局转换器 布局R.layout.xxx --->View
3:.控件 = convertView.findviewById()
convertView.setTag(holder)
else: holder = (ViewHolder)convertView.getTag()
赋值...
点击事件
返回convertView
高级控件 : 有限窗体展示大量数据的控件
View
GridView 网格
Spinner 下拉
AutoCompleteTextView 搜索提示
Gallery:
RecyclerView:
Activity的生命周期:
刚进入:
onCreate()
onStart()
onResume()
运行起来 running
onPause()
onStop()
onDestroy() :
1:点击跳转的时候
2:返回的时候