1、ArrayAdapter

实现代码;

public class MainActivity extends Activity {private ListView listAdapter;@Overrideprotected 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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);}}
运行效果 界面貌似太难看了,另外GraidView也可以使用SimpleAdapter达到九宫格的效果



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;}@Overridepublic int getCount() {return datas.size();}@Overridepublic Object getItem(int position) {return datas.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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;}}



更多相关文章

  1. Android:使用webview上传文件(支持相册和拍照) .
  2. Android/读取指定类型的文件
  3. android app 内部文件路径
  4. android重复的文件复制APK META-INF许可证错误记录
  5. Android(安卓)-- ListView(SimpleAdapter) 自定义适配器
  6. Android(安卓)Studio项目目录结构
  7. 为华为荣耀5c(nem-tlooh)编译最新twrp recovery
  8. Android注册表文件
  9. 编译应用时的Android.mk文件

随机推荐

  1. Androidの自定义对话框AlertDialog(一)
  2. Android(安卓): android 9.0 audio 接口
  3. 在Android中自定义IOS风格的按钮
  4. android studio打包apk时遇见的一些问题
  5. Android(安卓)Studio 之 AndroidManifest
  6. android:sharedUserId="android.uid.syst
  7. 为Android内核添加新驱动,并添加到menucon
  8. 安装android sdk 遇到几个问题
  9. Native+WebApp中Phonegap调用Android(安
  10. Android(安卓)很酷的天气动画控件