Android学习笔记之ListView
2015-08-08 09:42
405 查看
Android学习笔记之ListView
一.ListView使用
1.先在xml里面创建ListView控件<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
2.在主Activity中绑定并设置适配器,通过add方法添加列表项。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);//android.R.layout.simple_list_item_1系统资源 adapter = new ArrayAdapter<ListCellData>(this, R.layout.list_cell);//自定义 lv = (ListView) findViewById(R.id.listView); lv.setAdapter(adapter); adapter.add(new ListCellData("小明", "男", 15)); lv.setOnItemClickListener(this); adapter.add("hello"); adapter.add("world"); }
3.通过onItemClick方法可以设置列表项被点击的事件。
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListCellData data = adapter.getItem(position); Toast.makeText(this, String.format("名字:%s, 性别:%s, 年龄: %d", data.getUserName(), data.getSex(), data.getAge()), Toast.LENGTH_SHORT).show(); }
二.通过BaseAdapter创建有图标的ListView
public class CustomListViewAdapter extends BaseAdapter { private Context context = null; public CustomListViewAdapter(Context context) { this.context = context; } public Context getContext() { return context; } private CustomListCellData[] data = new CustomListCellData[]{ new CustomListCellData("img1", "dec img1", R.drawable.img1), new CustomListCellData("img2", "dec img2", R.drawable.img2), new CustomListCellData("img3", "dec img3", R.drawable.img3) }; // private String[] data = new String[]{"eoe1","eoe2","eoe3","eoe4","eoe5","eoe6","eoe7","eoe8"}; @Override public View getView(int position, View convertView, ViewGroup parent) //在呈现列表项的时候都会被执行 { // TextView tv = null; // // if (convertView != null) // { // tv = (TextView) convertView; // } // else // { // tv = new TextView(CustomListView.this); // } // // tv.setTextSize(30); // tv.setText(getItem(position)); // return tv; LinearLayout ll = null; if(convertView != null) { ll = (LinearLayout) convertView; } else { ll = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.custom_listcell, null); } CustomListCellData data = getItem(position); ImageView icon = (ImageView)ll.findViewById(R.id.icon); TextView name = (TextView) ll.findViewById(R.id.name); TextView dec = (TextView) ll.findViewById(R.id.dec); icon.setImageResource(data.iconId); name.setText(data.name); dec.setText(R.id.dec); return ll; } @Override public long getItemId(int position) { return position; } // @Override // public String getItem(int position) // { // return data[position]; // } @Override public CustomListCellData getItem(int position) { return data[position]; } @Override public int getCount() { return data.length; } }
其中getView方法在呈现列表项的时候都会被执行。
关于LayoutInflater用法,详见博客LayoutInflater详解。
然后创建一个ListViewActivity调用这个适配器
public class CustomListViewActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_listview_aty); setListAdapter(new CustomListViewAdapter(this)); } }
或者通过普通的activity来绑定ListView控件来实现适配器
public class CustomListView extends Activity { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_listview); lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new CustomListViewAdapter(this)); } }
相关文章推荐
- Android之四大布局【LinearLayout,TableLayout,FrameLayout,RelativeLayout】
- Android Studio 插件
- Android利用activity启动模式退出整个应用
- android listview 每一项都是edittext 导致的坑爹问题 内容的保存和焦点,光标位置的设置
- (转)android system.img,ramdisk.img,boot.img 分析
- 关于Android开发中图片的三级缓存机制
- android开发中conn.getResponseCode()==200抛出异常
- Android Studio开发环境搭建
- Android【UI界面】之XML与Java代码混合控制的思想
- Android学习笔记
- Android权限大全代码
- Android持久化js的localstorage
- Android入门——Handler机制
- 04. Android studio 发布APK
- Android中acyivity的生命周期
- Android自定义属性
- Android 图片加载库
- Android使用xUtils方便地下载 / xUtils介绍
- android安卓开发之图片轮播器demo
- 在android中画圆形图片的几种办法