布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
ArrayAdapter:
public class MainActivity extends ActionBarActivity {
private ArrayAdapter arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView)findViewById(R.id.listView);
String[] array = new String[]{"1","2","3"};
//1.新建一个数据适配器
//参数:上下文,列表的布局,数据源
//2.适配器加载数据源
arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,array);
//3.视图加载适配器
listView.setAdapter(arrayAdapter);
}
}
SimpleAdapter:
public class MainActivity extends Activity implements OnItemClickListener,
OnScrollListener {
private ListView listView;
private SimpleAdapter simple_adapter;
private List<Map<String, Object>> list;
private int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 匹配布局文件中的ListView控件
listView = (ListView) findViewById(R.id.listView);
// 设置ListView的元素被选中时的事件处理监听器
listView.setOnItemClickListener(this);
listView.setOnScrollListener(this);
getData();
// 设置SimpleAdapter监听器
/*
* context:上下文
data:数据源(List<? extends Map<String,?>> data)一个Map所组成的List集合
每个Map都会去对应ListView列表中的一行
每个Map(键-值对)中的键必须包含所有在from中所指定的键
resource:列表项的布局文件ID
from:Map中的键名
to:绑定数据视图中的ID,与from成对应关系
* */
simple_adapter = new SimpleAdapter(MainActivity.this,
list, R.layout.list_item,
new String[] { "image", "text" }, new int[] { R.id.image,
R.id.text });
listView.setAdapter(simple_adapter);
}
// 加载SimpleAdapter数据集
private List<Map<String, Object>> getData() {
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
for(int i = 0;i < 20;i++){
map.put("text", "java");
map.put("image", R.drawable.ic_launcher);
list.add(map);
}
Log.i("Main", list.size() + "");
return list;
}
// (5)事件处理监听器方法
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
// 获取点击ListView item中的内容信息
String text = listView.getItemAtPosition(position) + "";
// 弹出Toast信息显示点击位置和内容
Toast.makeText(MainActivity.this,
"position=" + position + " content=" + text, 0).show();
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
//是当用户由于之前划动屏幕并抬起手指,屏幕产生惯性滑动时
case SCROLL_STATE_FLING:
Log.d("Main", "用力划了一下");
Map<String, Object> map = new HashMap<String, Object>();
map.put("text", "滚动添加 "+i++);
map.put("image", R.drawable.ic_launcher);
list.add(map);
//动态更新视图中所包含的数据
simple_adapter.notifyDataSetChanged();
break;
//当用户在以触屏方式滚动屏幕并且手指仍然还在屏幕上
case SCROLL_STATE_TOUCH_SCROLL:
Log.d("Main", "当用户在以触屏方式滚动屏幕并且手指仍然还在屏幕上");
break;
//是当屏幕停止滚动时
case SCROLL_STATE_IDLE:
Log.d("Main", "当屏幕停止滚动时");
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
}