Android学习第四天————ListView用BaseAdapter适配器来填充数据

一、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中显示数据的功能已经实现



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值