public class TextMessage {
private String text;
public TextMessage(String content) {
this.text = content;
}
public String getText() {
return text;
}
public class ImageMessage {
private int imgResId;
public ImageMessage(int imgResId) {
this.imgResId = imgResId;
}
public int getImgResId() {
return imgResId;
}
}
Adapter类
public class MainAdapter extends BaseAdapter {
private static final int VIEW_TYPE_COUNT = 2;
private interface ViewType {
// 必须从0开始,因为ListView内部是用一个数组维护ViewType的。
int TEXT = 0;
int IMAGE =1;
}
private ArrayList
主界面
public class MainActivity extends AppCompatActivity {
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
ListView listView = (ListView) findViewById(R.id.list);
final ArrayList list = new ArrayList<>();
// 模拟数据。
for (int i=0; i<100;i++){
if (i%2==0){
TextMessage textMessage = new TextMessage("我是文本消息");
list.add(textMessage);
}else {
ImageMessage imageMessage = new ImageMessage(R.drawable.image);
list.add(imageMessage);
}
}
final MainAdapter adapter = new MainAdapter(context,list);
listView.setAdapter(adapter);
// 为ListView设置点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
String str = "item "+ position;
Toast.makeText(context,str, Toast.LENGTH_SHORT).show();
}
});
// 为ListView设置滑动监听事件
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
Log.d("listener","onScrollStateChange scrollState: " + scrollState);
}
@Override
/**
* @param firstVisibleItem: the index of the first visible cell (ignore if visibleItemCount == 0)
* @param visibleItemCount: the number of visible cells
*/
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// 如果滑到最底部,自动加载新数据。
if(firstVisibleItem+visibleItemCount == totalItemCount){
Toast.makeText(context, "加载新的数据", Toast.LENGTH_SHORT).show();
for (int i = 0 ; i< 100; i++){
TextMessage textMessage = new TextMessage("我是文本消息");
list.add(textMessage);
}
adapter.notifyDataSetChanged();
}
}
});
// 增加数据
Button add = (Button) findViewById(R.id.add_view);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String time = Calendar.getInstance().getTime().toString();
list.add(0,new TextMessage(time));
// 通知adapter刷新数据。
adapter.notifyDataSetChanged();
}
});
// 删除数据
Button delete = (Button) findViewById(R.id.delete_view);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (list.size() > 0){
list.remove(0);
adapter.notifyDataSetChanged();
}
}
});
}
}
原文地址:http://www.open-open.com/lib/view/open1346857871615.html
使用Java Mail API来发送邮件也很容易实现,但是最近公司一个同事封装的邮件API实在让我无法接受,于是便打算改用Spring Mail API来发送邮件,顺便记录下这篇文章。 【Spring Mail API】
Spring Mail API都在org.spri