ListView -- BaseAdapter的使用
来源:互联网 发布:程序员怎么找兼职 编辑:程序博客网 时间:2024/05/13 23:55
通过继承实现一个BaseAdapter类,实现上述的ListView。
1.首先设置一个布局文件sim_record.xml,其中只包含了一个ListView组件。
<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" tools:context=".SimRecord" android:orientation="vertical"> <ListView android:id="@+id/mlistview" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@android:color/holo_blue_light" android:dividerHeight="1dp" android:listSelector="@drawable/item_bg"/> </LinearLayout>
2.因为每一个item需要显示的是标题和内容。所以初始化俩个List用以存储item的标题和内容。
List<String> SimInforTitle = new ArrayList<String>(); List<String> SimInforSummary = new ArrayList<String>();
首先初始化SimInforTitle,即需要显示列表中的标题:Card ID / Data/ Sim State 等。。
private List<String> initSimInforTitle(List<String> SimInforTitle){ //SimInforTitle Log.d(TAG," initSimInforTitle()"); SimInforTitle.add(getString(R.string.siminfor_title_cardid)); SimInforTitle.add(getString(R.string.siminfor_title_date)); SimInforTitle.add(getString(R.string.siminfor_title_simstate)); SimInforTitle.add(getString(R.string.siminfor_title_simoperator)); SimInforTitle.add(getString(R.string.siminfor_title_simcountry)); SimInforTitle.add(getString(R.string.siminfor_title_datastate)); SimInforTitle.add(getString(R.string.siminfor_title_networktype)); return SimInforTitle; }
然后初始化SimInforSummary,从card_id从数据库中读取该卡的具体信息,即需要显示列表中的具体内容:
SimInforSummary = mSimRecordResolver.querySimInfor(card_id);
public List<String> querySimInfor(String card_id){String where = "card_id='"+card_id+"'"; // where = '123456'Cursor mCursor = mContentResolver.query(Uri.parse(CONTENT_URI), null, where, null, null); List<String> SimInforSummart = new ArrayList<String>();if(mCursor.moveToFirst()){//mMap.put("id", Integer.toString(mCursor.getInt(ID)));SimInforSummart.add(mCursor.getString(ID_CARD_ID));SimInforSummart.add(mCursor.getString(ID_DATE));SimInforSummart.add(convertSimState(mCursor.getString(ID_SIM_STATE)));SimInforSummart.add(mCursor.getString(ID_SIM_OPEARTOR));SimInforSummart.add(mCursor.getString(ID_SIM_COUNTRY));SimInforSummart.add(convertDataState(mCursor.getString(ID_DATA_STATE)));SimInforSummart.add(convertNetworkType(mCursor.getString(ID_NETWORK_TYPE)));Log.d(TAG," displayList() id="+Integer.toString(mCursor.getInt(ID)));Log.d(TAG," displayList() cardId="+mCursor.getString(ID_CARD_ID));Log.d(TAG," displayList() ID_DATE=" +mCursor.getString(ID_DATE));Log.d(TAG," displayList() ID_SIM_STATE="+ convertSimState(mCursor.getString(ID_SIM_STATE)));Log.d(TAG," displayList() ID_SIM_OPEARTOR="+ mCursor.getString(ID_SIM_OPEARTOR));Log.d(TAG," displayList() ID_SIM_COUNTRY="+ mCursor.getString(ID_SIM_COUNTRY));Log.d(TAG," displayList() ID_DATA_STATE="+ convertDataState(mCursor.getString(ID_DATA_STATE)));Log.d(TAG," displayList() ID_NETWORK_TYPE="+ convertNetworkType(mCursor.getString(ID_NETWORK_TYPE)));return SimInforSummart;}else{Log.d(TAG," querySimInfor()**where = " +where+ " .No Sim information");return null;}}
3.初始化ArrayList<Map<String,Object>> 类mList。
将每一个map值(即每一个item列表)存储在mList中,而map的值是通过SimInforTitle和SimInforSummary获取。
最后为ListView设置适配器(mBaseAdapter),即显示出item列表内容。
public void displaySimInfo(String card_id,List<String> SimInforTitle,List<String> SimInforSummary){ Log.d(TAG," displaySimInfo() "); ListView mListView = (ListView)findViewById(R.id.mlistview); List<Map<String,Object>> mList = new ArrayList<Map<String,Object>> (); mList.clear(); SimInforSummary = mSimRecordResolver.querySimInfor(card_id); //mMapDataBase stored the sim card information Log.d(TAG," displaySimInfo() -- SimInforSummary.size() = "+SimInforSummary.size()); for(int i=0; i<SimInforSummary.size(); i++){ Map<String,Object> mMap = new HashMap<String,Object>(); mMap.put("title", SimInforTitle.get(i)); mMap.put("summary", SimInforSummary.get(i)); mList.add(mMap); } MyBaseAdapter mBaseAdapter = new MyBaseAdapter(this); mListView.setAdapter(mBaseAdapter); }
4.继承实现BaseAdapter类
最重要的是覆写BaseAdapter类中的getView()方法。
首先将sim_infor_listview.xml布局文件转换为组件view:convertView =mInflater.inflate(R.layout.sim_infor_listview,null);
然后通过 ArrayList<Map<String,Object>>类mList将每一个item内容给设置上去。
private class MyBaseAdapter extends BaseAdapter{ private LayoutInflater mInflater; public MyBaseAdapter(Context context) {Log.d(TAG," MyBaseAdapter()");this.mInflater = LayoutInflater.from(context);}@Overridepublic int getCount() {// TODO Auto-generated method stubLog.d(TAG," MyBaseAdapter() -- getCount()=" + mList.size());return mList.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubLog.d(TAG," MyBaseAdapter() -- getItem()");return null;}@Overridepublic long getItemId(int itemId) { //return the list item id (0-6)// TODO Auto-generated method stubLog.d(TAG," MyBaseAdapter() -- getItemId()="+itemId);return itemId;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLog.d(TAG,"MyBaseAdapter -- getView() position=" +position + "; convertView = "+ convertView +"; parent=" +parent);ViewHolder mViewHolder =null;if(convertView == null){convertView = mInflater.inflate(R.layout.sim_infor_listview, null);mViewHolder = new ViewHolder();mViewHolder.setTitle((TextView)convertView.findViewById(R.id.text_title));mViewHolder.setSummary((TextView)convertView.findViewById(R.id.text_summary));convertView.setTag(mViewHolder);}else{mViewHolder=(ViewHolder)convertView.getTag();}mViewHolder.title.setText(mList.get(position).get("title").toString());mViewHolder.summary.setText(mList.get(position).get("summary").toString());return convertView;} }
private class ViewHolder{ public TextView title; public TextView summary;public TextView getTitle() {return title;}public void setTitle(TextView title) {this.title = title;}public TextView getSummary() {return summary;}public void setSummary(TextView summary) {this.summary = summary;} }
sim_info_listview.xml布局文件,即每一个item列表的布局
<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" tools:context=".SimRecord" android:orientation="vertical"> <TextView android:id="@+id/text_title" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="left|center" android:paddingLeft="15dp" android:ellipsize="end" android:singleLine="true" android:textSize="23dp"/> <TextView android:id="@+id/text_summary" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="left|center" android:paddingLeft="15dp" android:ellipsize="end" android:singleLine="true" android:textColor="@color/text_blue" android:textSize="20dp"/></LinearLayout>
0 0
- ListView -- BaseAdapter的使用
- listview的使用----BaseAdapter
- ListView+BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用 .
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView的使用和BaseAdapter
- ListView之BaseAdapter的使用
- ListView之BaseAdapter的使用
- ListView 中 BaseAdapter的使用
- java初始化顺序
- 蓝桥杯--结点选择
- 显示圆头像
- hdu 3400 Line belt
- 【KM匹配】 HDOJ 2255 奔小康赚大钱
- ListView -- BaseAdapter的使用
- oracle闪回功能
- ajax异步刷新
- C 算法精介----二叉树-->分析与实现
- 得到系统事务的相关信息
- AndroidFramework之Volley详细解析(一)
- 解决tomcat的虚拟目录的子目录里有中文目录,或中文参数,以及GET方式中文请求参数
- 抽象工厂模式
- head first python 读书记录