我的博客
来源:互联网 发布:linux vi 保存并退出 编辑:程序博客网 时间:2024/05/29 10:12
第一步,导入水果列表的代码。然后打开Fruit.java,添加变量:private String text;和private String time;分别的评论部分和显示时间的部分。添加Source-Generate Constructor using Fields,确定;再添加Getter、Setter方法。
第二步,这个时候系统会报错,打开MainActivity.java,修改initFruits()这个方法,Fruit apple = new Fruit("潇湘夜雨", R.drawable.p1,"今天好高兴啊!","1分钟前");下边的也类似。
第三步,打开FruitAdapter.java,修改 getView这个方法。添加TextView textView=(TextView)view.findViewById(R.id.textView);
TextView textView2=(TextView)view.findViewById(R.id.textView2);再添加textView.setText(fruit.getText());
textView2.setText(fruit.getTime());
第四步,自定义标题栏。
1.在res/value下建立mytitlebar.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="myTitleBg">
<item name="android:background">#FF0000</item>
</style>
<style name="myTheme" parent="android:Theme">
<item name="android:windowNoTitle">false</item>
<item name="android:windowTitleSize">30dp</item>
<item name="android:windowTitleBackgroundStyle">@style/myTitleBg</item>
</style>
</resources>
2.修改AndroidManifest.xml文件
android:theme="@style/myTheme"
下边是代码:
MainActivity.java[java] view plaincopyprint?01.package com.example.ui_listview01; 02. 03. 04.import java.util.ArrayList; 05.import java.util.List; 06. 07. 08.import android.app.Activity; 09.import android.os.Bundle; 10.import android.view.Menu; 11.import android.view.View; 12.import android.widget.AdapterView; 13.import android.widget.Toast; 14.import android.widget.AdapterView.OnItemClickListener; 15.import android.widget.ListView; 16. 17. 18.import com.example.ui_listview01.adpater.FruitAdapter; 19.import com.example.ui_listview01.model.Fruit; 20. 21. 22.public class MainActivity extends Activity { 23.private ListView lvFruits; 24.//1.准备好数据源 25.private List<Fruit> fruitList = new ArrayList<Fruit>(); 26. 27. 28.@Override 29.protected void onCreate(Bundle savedInstanceState) { 30.super.onCreate(savedInstanceState); 31.setContentView(R.layout.activity_main); 32.//1.准备好数据源 33.initFruits(); 34. 35.lvFruits = (ListView) findViewById(R.id.lvFruits); 36. 37.//2.创建Adapter 38. FruitAdapter adapter=new FruitAdapter(this, R.layout.fruit_item,fruitList); 39. 40. //3.绑定AdapterView和Adapter之间的关联 41.lvFruits.setAdapter(adapter); 42.lvFruits.setOnItemClickListener(new OnItemClickListener() { 43. 44. 45.public void onItemClick(AdapterView<?> adapterView, View view, int position, 46.long id) { 47. Fruit fruit=fruitList.get(position); 48. Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show(); 49.} 50.}); 51. 52. 53. 54. 55. 56. 57.} 58. 59. 60.private void initFruits() { 61.Fruit apple = new Fruit("潇湘夜雨", R.drawable.p1,"今天好高兴啊!","1分钟前"); 62.fruitList.add(apple); 63.Fruit banana = new Fruit("小小", R.drawable.p2,"今天吃了好多啊!","2分钟前"); 64.fruitList.add(banana); 65.Fruit orange = new Fruit("青春无悔", R.drawable.p3,"你今天多的怎么样啊?","3分钟前"); 66.fruitList.add(orange); 67.Fruit watermelon = new Fruit("小丸子", R.drawable.p4,"最近如何呀?","1小时前"); 68.fruitList.add(watermelon); 69.Fruit pear = new Fruit("米粒", R.drawable.p5,"过年好啊!","1.5小时前"); 70.fruitList.add(pear); 71.Fruit grape = new Fruit("丽丽", R.drawable.p6,"我今天中午在学校吃了好多呀!","2小时前"); 72.fruitList.add(grape); 73.Fruit pineapple = new Fruit(" 嘻嘻", R.drawable.p7,"你最近过的咋样啊!","6小时前"); 74.fruitList.add(pineapple); 75.Fruit strawberry = new Fruit("晕晕", R.drawable.p8,"我今晚上吃啥呀","1天前"); 76.fruitList.add(strawberry); 77.Fruit cherry = new Fruit("哈哈", R.drawable.p10,"再见了,各位朋友~","1周前"); 78.fruitList.add(cherry); 79. 80. 81. 82.} 83. 84. 85.@Override 86.public boolean onCreateOptionsMenu(Menu menu) { 87.// Inflate the menu; this adds items to the action bar if it is present. 88.getMenuInflater().inflate(R.menu.main, menu); 89.return true; 90.} 91. 92. 93.} package com.example.ui_listview01;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import com.example.ui_listview01.adpater.FruitAdapter;import com.example.ui_listview01.model.Fruit;public class MainActivity extends Activity {private ListView lvFruits;//1.准备好数据源private List<Fruit> fruitList = new ArrayList<Fruit>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.准备好数据源initFruits();lvFruits = (ListView) findViewById(R.id.lvFruits);//2.创建Adapter FruitAdapter adapter=new FruitAdapter(this, R.layout.fruit_item,fruitList); //3.绑定AdapterView和Adapter之间的关联lvFruits.setAdapter(adapter);lvFruits.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView<?> adapterView, View view, int position,long id) { Fruit fruit=fruitList.get(position); Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show();}});}private void initFruits() {Fruit apple = new Fruit("潇湘夜雨", R.drawable.p1,"今天好高兴啊!","1分钟前");fruitList.add(apple);Fruit banana = new Fruit("小小", R.drawable.p2,"今天吃了好多啊!","2分钟前");fruitList.add(banana);Fruit orange = new Fruit("青春无悔", R.drawable.p3,"你今天多的怎么样啊?","3分钟前");fruitList.add(orange);Fruit watermelon = new Fruit("小丸子", R.drawable.p4,"最近如何呀?","1小时前");fruitList.add(watermelon);Fruit pear = new Fruit("米粒", R.drawable.p5,"过年好啊!","1.5小时前");fruitList.add(pear);Fruit grape = new Fruit("丽丽", R.drawable.p6,"我今天中午在学校吃了好多呀!","2小时前");fruitList.add(grape);Fruit pineapple = new Fruit(" 嘻嘻", R.drawable.p7,"你最近过的咋样啊!","6小时前");fruitList.add(pineapple);Fruit strawberry = new Fruit("晕晕", R.drawable.p8,"我今晚上吃啥呀","1天前");fruitList.add(strawberry);Fruit cherry = new Fruit("哈哈", R.drawable.p10,"再见了,各位朋友~","1周前");fruitList.add(cherry);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}} FruitAdapter.java[java] view plaincopyprint?01.package com.example.ui_listview01.adpater; 02. 03. 04.import java.util.List; 05. 06. 07.import android.content.Context; 08.import android.view.LayoutInflater; 09.import android.view.View; 10.import android.view.ViewGroup; 11.import android.widget.ArrayAdapter; 12.import android.widget.BaseAdapter; 13.import android.widget.ImageView; 14.import android.widget.TextView; 15. 16. 17.import com.example.ui_listview01.R; 18.import com.example.ui_listview01.model.Fruit; 19. 20. 21.//存在问题:在FruitAdapter的getView()方法中每次都将布局重新加载了一遍,当ListView快速滚动的时候这就会成为性能的瓶颈 22.public class FruitAdapter extends ArrayAdapter<Fruit> { 23.private int resourceId; 24.public FruitAdapter(Context context, int textViewResourceId, 25.List<Fruit> data) { 26.super(context, textViewResourceId, data); 27.resourceId=textViewResourceId; 28.} 29. 30. 31.// 这个方法在每个子项被滚动到屏幕内的时候会被调用 32.@Override 33.public View getView(int position, View convertView, ViewGroup parent) { 34.Fruit fruit = getItem(position); 35.View view=LayoutInflater.from(getContext()).inflate(resourceId, null); 36.ImageView ivFruit=(ImageView) view.findViewById(R.id.ivFruit); 37.TextView tvFruit=(TextView) view.findViewById(R.id.tvFruit); 38.TextView textView=(TextView)view.findViewById(R.id.textView); 39.TextView textView2=(TextView)view.findViewById(R.id.textView2); 40.ivFruit.setImageResource(fruit.getImageId()); 41.tvFruit.setText(fruit.getName()); 42.textView.setText(fruit.getText()); 43.textView2.setText(fruit.getTime()); 44.return view; 45.} 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.} package com.example.ui_listview01.adpater;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.ui_listview01.R;import com.example.ui_listview01.model.Fruit;//存在问题:在FruitAdapter的getView()方法中每次都将布局重新加载了一遍,当ListView快速滚动的时候这就会成为性能的瓶颈public class FruitAdapter extends ArrayAdapter<Fruit> {private int resourceId;public FruitAdapter(Context context, int textViewResourceId,List<Fruit> data) {super(context, textViewResourceId, data);resourceId=textViewResourceId;}// 这个方法在每个子项被滚动到屏幕内的时候会被调用@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Fruit fruit = getItem(position);View view=LayoutInflater.from(getContext()).inflate(resourceId, null);ImageView ivFruit=(ImageView) view.findViewById(R.id.ivFruit);TextView tvFruit=(TextView) view.findViewById(R.id.tvFruit);TextView textView=(TextView)view.findViewById(R.id.textView);TextView textView2=(TextView)view.findViewById(R.id.textView2);ivFruit.setImageResource(fruit.getImageId());tvFruit.setText(fruit.getName());textView.setText(fruit.getText());textView2.setText(fruit.getTime());return view;}} FruitAdapterImprove1.java[java] view plaincopyprint?01.package com.example.ui_listview01.adpater; 02. 03. 04.import android.content.Context; 05.import android.view.LayoutInflater; 06.import android.view.View; 07.import android.view.ViewGroup; 08.import android.widget.ArrayAdapter; 09.import android.widget.ImageView; 10.import android.widget.TextView; 11. 12. 13.import com.example.ui_listview01.R; 14.import com.example.ui_listview01.model.Fruit; 15. 16. 17.//存在问题:虽然现在已经不会再重复去加载布局,但是每次在getView()方法中还是会调用View的findViewById()方法来获取一次控件的实例。 18.public class FruitAdapterImprove1 extends ArrayAdapter { 19. 20. 21.private int resourceId; 22. 23. 24.public FruitAdapterImprove1(Context context, int textViewResourceId) { 25.super(context, textViewResourceId); 26.resourceId = textViewResourceId; 27.} 28. 29. 30.// 这个方法在每个子项被滚动到屏幕内的时候会被调用 31.//getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用 32.@Override 33.public View getView(int position, View convertView, ViewGroup parent) { 34.Fruit fruit = (Fruit) getItem(position); 35.View view=null; 36.if(convertView==null) 37. view = LayoutInflater.from(getContext()).inflate(resourceId, null); 38.else 39. view=convertView; 40.ImageView fruitImage = (ImageView) view.findViewById(R.id.ivFruit); 41.TextView fruitName = (TextView) view.findViewById(R.id.tvFruit); 42.fruitImage.setImageResource(fruit.getImageId()); 43.fruitName.setText(fruit.getName()); 44.return view; 45.} 46. 47. 48.} package com.example.ui_listview01.adpater;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.ui_listview01.R;import com.example.ui_listview01.model.Fruit;//存在问题:虽然现在已经不会再重复去加载布局,但是每次在getView()方法中还是会调用View的findViewById()方法来获取一次控件的实例。public class FruitAdapterImprove1 extends ArrayAdapter {private int resourceId;public FruitAdapterImprove1(Context context, int textViewResourceId) {super(context, textViewResourceId);resourceId = textViewResourceId;}// 这个方法在每个子项被滚动到屏幕内的时候会被调用//getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Fruit fruit = (Fruit) getItem(position);View view=null;if(convertView==null) view = LayoutInflater.from(getContext()).inflate(resourceId, null);else view=convertView;ImageView fruitImage = (ImageView) view.findViewById(R.id.ivFruit);TextView fruitName = (TextView) view.findViewById(R.id.tvFruit);fruitImage.setImageResource(fruit.getImageId());fruitName.setText(fruit.getName());return view;}} FruitAdapterImprove2.doc[java] view plaincopyprint?01.package com.example.ui_listview01.adpater; 02. 03. 04.import android.content.Context; 05.import android.view.LayoutInflater; 06.import android.view.View; 07.import android.view.ViewGroup; 08.import android.widget.ArrayAdapter; 09.import android.widget.ImageView; 10.import android.widget.TextView; 11. 12. 13.import com.example.ui_listview01.R; 14.import com.example.ui_listview01.model.Fruit; 15. 16. 17.//我们新增了一个内部类ViewHolder,用于对控件的实例进行缓存。 18.//当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。 19.//当convertView不为空的时候则调用View的getTag()方法,把ViewHolder重新取出。 20.//这样所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。 21.public class FruitAdapterImprove2 extends ArrayAdapter { 22. 23. 24.private int resourceId; 25. 26. 27.public FruitAdapterImprove2(Context context, int textViewResourceId) { 28.super(context, textViewResourceId); 29.resourceId = textViewResourceId; 30.} 31. 32. 33.// 这个方法在每个子项被滚动到屏幕内的时候会被调用 34.// getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用 35.@Override 36.public View getView(int position, View convertView, ViewGroup parent) { 37.Fruit fruit = (Fruit) getItem(position); 38.View view = null; 39.ViewHolder viewHolder; 40.if (convertView == null) { 41.view = LayoutInflater.from(getContext()).inflate(resourceId, null); 42.viewHolder = new ViewHolder(); 43.viewHolder.ivFruit = (ImageView) view.findViewById(R.id.ivFruit); 44.viewHolder.tvFruit = (TextView) view.findViewById(R.id.tvFruit); 45.view.setTag(viewHolder); 46.} else { 47.view = convertView; 48.viewHolder = (ViewHolder) convertView.getTag(); 49.} 50.viewHolder.ivFruit.setImageResource(fruit.getImageId()); 51.viewHolder.tvFruit.setText(fruit.getName()); 52.return view; 53.} 54. 55. 56.class ViewHolder { 57. 58. 59.ImageView ivFruit; 60. 61. 62.TextView tvFruit; 63. 64. 65.} 66. 67. 68.} package com.example.ui_listview01.adpater;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.ui_listview01.R;import com.example.ui_listview01.model.Fruit;//我们新增了一个内部类ViewHolder,用于对控件的实例进行缓存。//当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。//当convertView不为空的时候则调用View的getTag()方法,把ViewHolder重新取出。//这样所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。public class FruitAdapterImprove2 extends ArrayAdapter {private int resourceId;public FruitAdapterImprove2(Context context, int textViewResourceId) {super(context, textViewResourceId);resourceId = textViewResourceId;}// 这个方法在每个子项被滚动到屏幕内的时候会被调用// getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Fruit fruit = (Fruit) getItem(position);View view = null;ViewHolder viewHolder;if (convertView == null) {view = LayoutInflater.from(getContext()).inflate(resourceId, null);viewHolder = new ViewHolder();viewHolder.ivFruit = (ImageView) view.findViewById(R.id.ivFruit);viewHolder.tvFruit = (TextView) view.findViewById(R.id.tvFruit);view.setTag(viewHolder);} else {view = convertView;viewHolder = (ViewHolder) convertView.getTag();}viewHolder.ivFruit.setImageResource(fruit.getImageId());viewHolder.tvFruit.setText(fruit.getName());return view;}class ViewHolder {ImageView ivFruit;TextView tvFruit;}}Fruit.java[java] view plaincopyprint?01.package com.example.ui_listview01.model; 02. 03. 04.public class Fruit { 05.private String name; 06.private int imageId; 07.private String text; 08.private String time; 09.public Fruit(String name, int imageId, String text, String time) { 10.super(); 11.this.name = name; 12.this.imageId = imageId; 13.this.text = text; 14.this.time = time; 15.} 16.public String getName() { 17.return name; 18.} 19.public void setName(String name) { 20.this.name = name; 21.} 22.public int getImageId() { 23.return imageId; 24.} 25.public void setImageId(int imageId) { 26.this.imageId = imageId; 27.} 28.public String getText() { 29.return text; 30.} 31.public void setText(String text) { 32.this.text = text; 33.} 34.public String getTime() { 35.return time; 36.} 37.public void setTime(String time) { 38.this.time = time; 39.} 40. 41. 42. 43. 44. 45. 46. 47.} package com.example.ui_listview01.model;public class Fruit {private String name;private int imageId;private String text;private String time;public Fruit(String name, int imageId, String text, String time) {super();this.name = name;this.imageId = imageId;this.text = text;this.time = time;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getImageId() {return imageId;}public void setImageId(int imageId) {this.imageId = imageId;}public String getText() {return text;}public void setText(String text) {this.text = text;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}}fruit_item.xml[html] view plaincopyprint?01.<?xml version="1.0" encoding="utf-8"?> 02.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 03. android:layout_width="match_parent" 04. android:layout_height="wrap_content" 05. android:orientation="horizontal" > 06. 07. 08. <ImageView 09. android:id="@+id/ivFruit" 10. android:layout_width="wrap_content" 11. android:layout_height="wrap_content" 12. android:src="@drawable/p1" /> 13. 14. 15. <TextView 16. android:id="@+id/tvFruit" 17. android:layout_width="wrap_content" 18. android:layout_height="wrap_content" 19. android:layout_margin="10dp" 20. android:layout_marginLeft="27dp" 21. android:layout_toRightOf="@+id/ivFruit" 22. android:text="Apple" /> 23. 24. 25. <TextView 26. android:id="@+id/textView" 27. android:layout_width="wrap_content" 28. android:layout_height="wrap_content" 29. android:layout_alignLeft="@+id/tvFruit" 30. android:layout_below="@+id/tvFruit" 31. android:layout_marginLeft="21dp" 32. android:text="今天真高兴" /> 33. 34. 35. <TextView 36. android:id="@+id/textView2" 37. android:layout_width="wrap_content" 38. android:layout_height="wrap_content" 39. android:layout_alignBaseline="@+id/tvFruit" 40. android:layout_alignBottom="@+id/tvFruit" 41. android:layout_alignParentRight="true" 42. android:layout_marginRight="16dp" 43. android:text="TextView" /> 44. 45. 46.</RelativeLayout> <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/ivFruit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/p1" /> <TextView android:id="@+id/tvFruit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_marginLeft="27dp" android:layout_toRightOf="@+id/ivFruit" android:text="Apple" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/tvFruit" android:layout_below="@+id/tvFruit" android:layout_marginLeft="21dp" android:text="今天真高兴" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/tvFruit" android:layout_alignBottom="@+id/tvFruit" android:layout_alignParentRight="true" android:layout_marginRight="16dp" android:text="TextView" /></RelativeLayout>activity_main.xml[html] view plaincopyprint?01.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 02. xmlns:tools="http://schemas.android.com/tools" 03. android:id="@+id/LinearLayout1" 04. android:layout_width="match_parent" 05. android:layout_height="match_parent" 06. android:orientation="vertical" 07. tools:context=".MainActivity" > 08. 09. 10. <ListView 11. android:id="@+id/lvFruits" 12. android:layout_width="match_parent" 13. android:layout_height="wrap_content" > 14. </ListView> 15. 16. 17.</LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <ListView android:id="@+id/lvFruits" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView></LinearLayout> AndroidManifest.xml[html] view plaincopyprint?01.<?xml version="1.0" encoding="utf-8"?> 02.<manifest xmlns:android="http://schemas.android.com/apk/res/android" 03. package="com.example.ui_listview01" 04. android:versionCode="1" 05. android:versionName="1.0" > 06. 07. 08. 09. <uses-sdk 10. android:minSdkVersion="8" 11. android:targetSdkVersion="17" /> 12. 13. 14. <application 15. android:allowBackup="true" 16. android:icon="@drawable/ic_launcher" 17. android:label="@string/app_name" 18. android:theme="@style/myTheme" > 19. <activity 20. android:name="com.example.ui_listview01.MainActivity" 21. android:label="@string/app_name" > 22. <intent-filter> 23. <action android:name="android.intent.action.MAIN" /> 24. 25. 26. <category android:name="android.intent.category.LAUNCHER" /> 27. </intent-filter> 28. </activity> 29. </application> 30. 31. 32.</manifest>
- 我的博客园博客
- 我的博客园博客
- 博客,开启我的博客
- 我写我的博客
- 我爱我的博客
- 我的博客我做主
- 我的博客我做主
- 我的博客我做主
- 我的博客宣言
- 我的博客起步!
- 我的常用博客
- 我的博客
- 我的博客
- 欢迎光临我的博客
- 我的博客计划
- 我的博客
- 我的博客
- 我的博客计划
- UML类图几种关系的总结
- Redis 指南(1)- 简介
- Java NIO使用及原理分析(三)
- Liferay开发过程中的一些常见问题
- c# 获取Excel内容的分析
- 我的博客
- 使用 163 邮箱接收 ASP.NET 用户反馈
- iOS开发-Xcode Debug、Release、Archive、Profile、Analyze概念解释
- python学习疑点总结
- Linux kernel 初始化加速
- [leetcode][tree] Binary Tree Inorder Traversal
- HDU—1171 DP 01背包
- android:screenOrientation属性限制
- 设置ListView的属性