ListView的使用
ListView的使用
ListView
是一个用来展示处于垂直的滚动列表中的items的View。这些Items来自与其相关联的ListAdapter。ListAdapter继承自Adapter
,它是一个链接ListView与 列表后面的数据的桥梁。Frequently that data comes from a Cursor, but that is not required.The ListView can display any data provided that it is wrapped in a ListAdapter.An Adapter object acts as a bridge between an AdapterView
and the underlying data for that view. The Adapter provides access to the dataitems. The Adapter is also responsible for making a View
for each item in the data set.
使用ListView
1.创建ListView
<RelativeLayoutxmlns: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="com.cqjtu.yanguifeng.listview.MainActivity"><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/lv_test"></ListView></RelativeLayout>
2.创建一个类,该类的对象包含了ListView中的子项中的数据。我们要创建的案例中,一个ListView中的子项包含了两个TextView,一个TextView是大标题,另一个TextView是对大标题的详细描述,如Memory标题下有一个4GB的描述。我们创建一个类,这个类有两个成员变量,分别是描述ListView子项大标题和详细描述的字符串。分别是title和content。如下所示
publicclassMyData{privateStringtitle;privateStringcontent;publicMyData(Stringtitle,Stringcontent){this.title=title;this.content=content;}publicStringgetContent(){returncontent;}publicStringgetTitle(){returntitle;}}
3.为ListView中的子项创建布局文件
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--用来显示子项数据之一的title--><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp"android:paddingTop="10dp"android:paddingLeft="5dp"/><!--用来显示子项数据之二的content--><TextViewandroid:id="@+id/tv_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="10dp"android:paddingLeft="5dp"android:textColor="#BFBFBF"/></LinearLayout>
4.创建自定义的Adapter类来加工自定义的类的对象
//创建适配器,使之能够加工ListView子项背后的数据成为ListView的子项publicclassMyDataAdapterextendsArrayAdapter<MyData>{privateintitemLayoutId;//ListView子项的布局文件IDpublicMyDataAdapter(Contextcontext,intresource,List<MyData>objects){super(context,resource,objects);itemLayoutId=resource;}//当ListView中的子项滚动到屏幕中时会调用这个方法来产生ListView的子项view,然后ListView显示之@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){//根据position参数得到ListView子项后面的数据MyDatamyData=getItem(position);Viewview;//ListView的子项viewViewHolderviewHolder;//存储ListView子项view中的viewif(convertView==null)//如果没有缓存{view=LayoutInflater.from(getContext()).inflate(itemLayoutId,null);viewHolder=newViewHolder();//将得到的view的ID保存在viewHolder的域中,方便以后的使用//这种方法是为了优化ListView的显示而作的viewHolder.tv_title=(TextView)view.findViewById(R.id.tv_title);viewHolder.tv_content=(TextView)view.findViewById(R.id.tv_content);view.setTag(viewHolder);}else{view=convertView;viewHolder=(ViewHolder)view.getTag();}viewHolder.tv_title.setText(myData.getTitle());viewHolder.tv_content.setText(myData.getContent());returnview;}classViewHolder{TextViewtv_title;TextViewtv_content;}}
5.在代码中显式ListView
importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.ListView;importandroid.widget.Toast;publicclassMainActivityextendsActivity{privateListViewlv_test;privateList<MyData>items=newArrayList<MyData>();//初始化数据privatevoidinit(){MyDataitem1=newMyData("手机型号","MyPhone");items.add(item1);MyDataitem2=newMyData("Androidversion","4.4.4");items.add(item2);MyDataitem3=newMyData("Processor","MSM8974fourcores");items.add(item3);MyDataitem4=newMyData("Memory","4GB");items.add(item4);MyDataitem5=newMyData("version","123456");items.add(item5);MyDataitem6=newMyData("PhoneNumber","18523415974");items.add(item6);MyDataitem7=newMyData("Name","Yanguifeng");items.add(item7);}@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();lv_test=(ListView)findViewById(R.id.lv_test);MyDataAdapteradapter=newMyDataAdapter(this,R.layout.listview_item_layout,items);lv_test.setAdapter(adapter);lv_test.setOnItemClickListener(newOnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){MyDatamyData=(MyData)parent.getItemAtPosition(position);Toast.makeText(view.getContext(),myData.getTitle(),Toast.LENGTH_LONG).show();}});}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){//Handleactionbaritemclickshere.Theactionbarwill//automaticallyhandleclicksontheHome/Upbutton,solong//asyouspecifyaparentactivityinAndroidManifest.xml.intid=item.getItemId();if(id==R.id.action_settings){returntrue;}returnsuper.onOptionsItemSelected(item);}}
2015-6-17日 创建
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。