ListView 自定義adapter

daapter 代碼: java


package com.example.Listdeamon;

import java.util.List;
import java.util.Map;


import android.app.AlertDialog;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;

public class MySimpleAdapter extends BaseAdapter{
    private LayoutInflater mInflater;
    private List<Map<String,Object>> list;
    private int layoutID;
    private String flag[];
    private int Items[];
	
    public MySimpleAdapter(Context context,List<Map<String, Object>>list,int layoutID,String flag[],int ItemIDs[]){
    	this.mInflater=LayoutInflater.from(context);//實例化 context 
    	this.list=list;
    	this.layoutID=layoutID;
    	this.flag=flag;
    	this.Items=ItemIDs;
    }
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		convertView =mInflater.inflate(layoutID, null);//填充佈局;
		for(int i=0;i<flag.length;i++){
			 if(convertView.findViewById(Items[i]) instanceof ImageView){
				 ImageView iv=(ImageView)convertView.findViewById(Items[i]);
				 iv.setBackgroundResource((Integer)list.get(position).get(flag[i]));
			 }else if(convertView.findViewById(Items[i]) instanceof TextView){
				 TextView tv=(TextView)convertView.findViewById(Items[i]);
				 tv.setText((String)list.get(position).get(flag[i]));
			 }
		}
			
			
			((Button)convertView.findViewById(R.id.btn)).setOnClickListener(new OnClickListener() {
				
				public void onClick(View v) {
					// TODO Auto-generated method stub
					new AlertDialog.Builder(mInflater.getContext()).setTitle("自定義adabpter").
					setMessage("觸發監聽").
					show();
					System.out.println("觸發按鈕");
				}
			});
			
			((CheckBox)convertView.findViewById(R.id.cb)).setOnCheckedChangeListener(new OnCheckedChangeListener() {
				
				@Override
				public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
					// TODO Auto-generated method stub
					System.out.println("cheak box");
				}
			});
		
		return convertView;	 
	}
}



Activity 代碼: android

 

package com.example.Listdeamon;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;


public class MainActivity extends Activity{
    private MySimpleAdapter sp;
    private ListView listView;
    private List<Map<String, Object>> list;
    private String[] str={"item_imageview","item_bigtv","item_smalltv"};
    private int[] intager={R.id.imv,R.id.bigtv,R.id.smalltv};
   
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		list=new ArrayList<Map<String,Object>>();
		listView=new ListView(this);
		
		 Map<String, Object> map=new HashMap<String, Object>();
		 map.put("item_imageview", R.drawable.ic_launcher);
		 map.put("item_bigtv", "BIGTV");
		 map.put("item_smalltv", "SMALLTV");
		 
		 list.add(map);
		 sp=new MySimpleAdapter(this, list, R.layout.activity_main,str, intager);
		 
		 listView.setAdapter(sp);
		 setContentView(listView);		
	}
	


	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
 
   
}


Xml 代碼: app

 

<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=".MainActivity" >
  <ImageView android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/imv"/>
    <LinearLayout android:orientation="vertical"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
        
      <TextView 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textSize="20sp"
       android:id="@+id/bigtv"/>
      <TextView 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textSize="20sp"
       android:id="@+id/smalltv"/>
    </LinearLayout>
 <Button 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="button"
     android:id="@+id/btn"/>
 <CheckBox android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/cb"/>

</LinearLayout>


效果圖: ide

相關文章
相關標籤/搜索