您的位置:首页 > 其它

ListView 自定义adapter

2012-12-01 00:00 260 查看
daapter 代码:

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 代码:

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 代码:

<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>


效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息