本文仅仅为个人开发中容易遗忘的一些知识点,某些省略地方看不懂的请原谅或绕过!CSDN如有隐藏功能,作为笔记的部分是会主动隐藏的,不希望误导某些人,请留心此标记
Android eclipse UI设计和xml切换 快捷键
切换AndroidUI 视图 和xml 视图
alt + pageUp
alt + pageDown切换 代码之间 打开的文件
ctrl+ pageUp
ctrl+ pageDown
Android Junit 测试
- 测试方法必须 test开头
- 点击 –>方法名 —>右击 Android junit测试
- Gson 把 一个json 字符串 转换为一个java 对象
String jsonStr = doGet(msg);
Gson gson = new Gson();
Result result = gson.fromJson(jsonStr,Result.class); // Result.class bean对象
智能小慕 机器人
- 使用 了枚举类型,Adapter返回 ChatMessage时候,比平时多重写了
两个方法 getItemViewType(int position); 和 getViewTypeCount();//用了两个item布局
且为了 listView的缓存效率 ,用到了ViewHolder(普通类 ) - listView的缓存效率
- listView多布局的使用
- 第三方Api的调用
private final class ViewHolder{
TextView mDate;
TextView mMsg ;
}
public View getView(int position,View convertView,ViewGroup parent){
ChatMessage charMessage = mlist.get(position);
ViewHolder viewHolder = null;
if(convertView == null){
if(getItemViewType(position) == 0 ){
convertView = inflater.inflate(R.layout.item_from_msg,parent,false);
// 设置 ViewHolder 的引用执行 convertView的各个View
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView.findViewById(R.id.id_item_from_msg_date);
viewHolder.mMsg = (TextView) convertView.findViewById(R.id.id_item_from_msg_info);
}else{
...............
}
convertView.setTag(viewHolder); // 存储 一下 ViewHolder
}else{
viewHolder = (ViewHolder) convertView.getTag(); //取出ViewHolder
}
//设置数据
viewHolder.mDate.setText(charMessage.getDate());
viewHolder.mMsg.setText(charMessage.getMsg());
return convertView;
}
初始化欢迎数据,(即先设置 1 个listView数据 )
消息传送和更新UI
onclick(){
... //发送: 这里也需要跟新UI和 通知数据变化
ChatMessage fromMessage = HttpUtils.sendMessage(toMsg);
Message msg = Message.obtain();
msg.obj = fromMessage;
handler.sendMessage(msg);
}
处理 消息
ChatMessage charMessage = msg.obj;
list.add(fromMessage);
adapter.notifyDataSetChanged();
}
HttpUrlConnection 小说明
httpUrlConnection.setDoOutput(true);以后就可以使用conn.getOutputStream().write()
httpUrlConnection.setDoInput(true);以后就可以使用conn.getInputStream().read();
get请求用不到conn.getOutputStream(),因为参数直接追加在地址后面,因此默认是false。
post请求(比如:文件上传)需要往服务区传输大量的数据,这些数据是放在http的body里面的,因此需要在建立连接以后,往服务端写数据。
因为总是使用conn.getInputStream()获取服务端的响应,因此默认值是true。
java.io.BufferedInputStream.available() 方法返回从输入流中读取不受阻塞,输入流方法的下一次调用的剩余字节数。
下面的示例演示java.io.BufferedInputStream.available()方法的用法。
package com.yiibai;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class BufferedInputStreamDemo {
public static void main(String[] args) throws Exception {
InputStream inStream = null;
BufferedInputStream bis = null;
try{
// open input stream test.txt for reading purpose.
inStream = new FileInputStream("c:/test.txt");
// input stream is converted to buffered input stream
bis = new BufferedInputStream(inStream);
// read until a single byte is available
while( bis.available() > 0 )
{
// get the number of bytes available
Integer nBytes = bis.available();
System.out.println("Available bytes = " + nBytes );
// read next available character
char ch = (char)bis.read();
// print the read character.
System.out.println("The character read = " + ch );
}
}catch(Exception e){
e.printStackTrace();
}finally{
// releases any system resources associated with the stream
if(inStream!=null)
inStream.close();
if(bis!=null)
bis.close();
}
}
}
假设有一个文本文件c:/ test.txt,它具有以下内容。该文件将被用作输入我们的示例程序:
ABCDE
编译和运行上面的程序,这将产生以下结果:
Available bytes = 5
The character read = A
Available bytes = 4
The character read = B
Available bytes = 3
The character read = C
Available bytes = 2
The character read = D
Available bytes = 1
The character read = E