1、ArrayAdapter
实现代码;
public class MainActivity extends Activity {
private ListView listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView(){
listAdapter = (ListView) findViewById(R.id.list_adapter);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.list ,new String[]{"音乐","电影","足球"});
listAdapter.setAdapter(adapter);
}
}
在xml文件中方textView 用来显示数组的内容
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
运行效果
需要注意的是当自己写一个list.xml文件来存放数组中的内容时TextView应为最外层控件(即TextView不能放在任何Layout控件里面)否则报错you must support a resource ID for a TextView 报错如下:
下
当然你也可以不写含(用来显示)TextView的.xml文件只要将
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.list ,new String[]{"音乐","电影","足球"});改成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
<span style="white-space:pre"> </span>android.R.layout.simple_list_item_1,new String[]{"音乐","电影","足球"});
</pre><pre name="code" class="java">使用Android自导的组件即可
2、SimpleAdapter
首先在主界面放一个listview组件.xml
<ListView
android:id="@+id/list_adapter"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
在准备一个xml文件设计界面的格式.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/role"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/team"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
将适配器与xml结合起来
public class SimpleAdapterActivity extends Activity {
private ListView listView ;
private String [] keys = new String []{"name","role","team"};
private int [] IDs = new int[]{R.id.name,R.id.role,R.id.team};
private List<HashMap<String, String>>list;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
}
private void initView(){
listView = (ListView)findViewById(R.id.list_adapter);
list = new ArrayList<HashMap<String,String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "小罗");
map.put("role", "足球");
map.put("team", "巴萨罗那");
list.add(map);
HashMap<String, String> map2 = new HashMap<String, String>();
map2.put("name", "乔丹");
map2.put("role", "篮球");
map2.put("team", "公牛");
list.add(map2);
SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), list, R.layout.list, keys, IDs);
listView.setAdapter(adapter);
}
}
运行效果
3、通过继承适配器类自定义适配器
其实原理都一样,就像ExpandableListView组件在运用的使用其需要自定义适配器 具体参考:
http://blog.csdn.net/wenzhenyu1990/article/details/14434407
自定义适配器常见的一种extends BaseAdapter 的 比如一个listView 点击item时惊醒修改,点击按钮时实现删除,这时需要自定义一个extends BaseAdapter的适配器这样的,并且将listView 的descendantFocusability设置为blocksDescendants 同事将Button的focusable设置为false。 具体代码有时间补上。
基于BaseAdapter 自定义的Adapter
class UsersShowAdapter extends BaseAdapter{
private ViewHolder holder = new ViewHolder();
private List<HashMap<String, String>> datas;
private Context context;
private LayoutInflater inflater;
public UsersShowAdapter(Context context,List<HashMap<String, String>> datas) {
this.context = context;
inflater = LayoutInflater.from(context);
this.datas = datas;
}
@Override
public int getCount() {
return datas.size();
}
@Override
public Object getItem(int position) {
return datas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup group) {
if(convertView==null){
convertView = inflater.inflate(R.layout.app_list_item, null);
holder.accountView = (TextView) convertView.findViewById(R.id.item_account);
holder.genderView = (TextView)convertView.findViewById(R.id.item_gender);
holder.del = (Button)convertView.findViewById(R.id.item_del);
holder.del.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "del", Toast.LENGTH_LONG).show();
}
});
holder.update=(Button)convertView.findViewById(R.id.item_update);
holder.update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "update", Toast.LENGTH_LONG).show();
}
});
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.accountView.setText(datas.get(position).get(Data.ACCOUNT));
holder.genderView.setText(datas.get(position).get(Data.GENDER));
holder.del.setText("del");
holder.update.setText("update");
return convertView;
}
}