一、BastAdapter适配器获得数据,用来填充ListView组件
1、通过XML文件来创建ListView组件
示例代码
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.niit.androidfourday.MainActivity" >
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></ListView>
</RelativeLayout>
2、通过XML 文件来创建需要在ListView组件中显示的组件
示例代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
以上代码创建了一个图片View和文本View和一个按钮
3、
BastAdapter是一个抽象类,因此必须用子类去继承BastAdapter类,然后去重写里面的方法
示例代码
定义一个类在其中定义上面在XML文件中添加的三个组件
private class MyViewGroup{
private ImageView imageView;
private TextView textView;
private Button button;
}
定义一个方法用来获得需要放置在组件中的数据
public ArrayList<Map<String, Object>> getArrayList(){
ArrayList<Map<String, Object>> arrayList=new ArrayList<Map<String,Object>>();//声明一个集合用来存储组件信息
Map<String, Object> map=new HashMap<String, Object>();//声明一个map来存放一组组件信息
map.put("image", R.drawable.tu2);//将图片信息放到map中
map.put("text", "图片");//将文本信息放到map中
map.put("button", "查看");//将按钮信息放到map中
arrayList.add(map);//将该map放到集合中
map=new HashMap<String, Object>();
map.put("image", R.drawable.tu3);
map.put("text", "图片");
map.put("button", "查看");
arrayList.add(map);
return arrayList;//返回多组组件信息
}
MyAdapter2继承BaseAdapter重写其方法
private class MyAdapter2 extends BaseAdapter{
//获得列表项的个数
@Override
public int getCount() {
// TODO Auto-generated method stub
return getArrayList().size();
}
//返回某一个列表项
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
//得到列表项的ID
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
//返回列表项的组件
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
MyViewGroup myViewGroup=null;
//将list_view_group布局文件转换成view组件,因为R.layout.list_view_group不在当前的Activity中因此需要//将其转化成一个view组件才能获得其中的组件
if(convertView==null){
convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.list_view_group, null);
myViewGroup=new MyViewGroup();
myViewGroup.imageView=(ImageView)convertView.findViewById(R.id.img);//获取布局文件中的imageView组件
myViewGroup.textView=(TextView)convertView.findViewById(R.id.text);
myViewGroup.button=(Button)convertView.findViewById(R.id.button);
convertView.setTag(myViewGroup);//将自定义的一组组件对象放置到view中
}else{
myViewGroup=(MyViewGroup) convertView.getTag();//得到view中的自定义组件对象
}
myViewGroup.imageView.setImageResource((Integer) getArrayList().get(position).get("image"));
myViewGroup.textView.setText(getArrayList().get(position).get("text").toString());
myViewGroup.button.setText(getArrayList().get(position).get("button").toString());
myViewGroup.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {//单击鼠标事件
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "第"+position+"被点击", Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
public int getCount()//方法是用来获得适配器中的数据的条数<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;">public Object getItem(int position)//是用来获得当前选中的对象</span>
<pre name="code" class="java"><pre name="code" class="java">public long getItemId(int position)//用来获得当前选中的记录的标号
<pre name="code" class="java">public View getView(final int position, View convertView, ViewGroup parent)//用来返回一组组件
最后在OnCreate()中获得显示的ListView并将适配器里的内容给他
ListView listView=(ListView)findViewById(R.id.listview);
listView.setAdapter(new myAdapter());
至此通过BaseAdapter适配器来在ListView中显示数据的功能已经实现
版权声明:本文为android_hdh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。