public class TestView extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
/**
* 设置ListActivity的适配器
*/
setListAdapter(new MyAdapter(Test2.this,list));
}
}
/**
* 基于BaseAdapter的自定义Adapter
* @author Administrator
*
*/
class MyAdapter extends BaseAdapter{
Context context;
List<String> titles;
/**
* LayoutInflater 是将layout.xml转化成View的类
*/
LayoutInflater lif;
public MyAdapter(Context context,List<String> titles){
this.context = context;
this.titles = titles;
}
/**
* list总数
*/
public int getCount() {
return titles.size();
}
/**
* 返回 position项
*/
public Object getItem(int position) {
return null;
}
/**
* 返回itemId
*/
public long getItemId(int position) {
return position;
}
/**
* View关键代码
*/
public View getView(int position, View convertView, ViewGroup parent) {
MyView mv;
final int pos = position;
/**
* 自定义的view就是修改这个convertView就可以了
*/
if(convertView == null){
mv = new MyView();
lif = LayoutInflater.from(context);//转化到context这个容器
convertView = lif.inflate(R.layout.layout, null);//设置要转化的layout文件
mv.tv = (TextView)convertView.findViewById(R.id.Title);//取得实例
mv.btn = (Button)convertView.findViewById(R.id.Button01);//取得实例
convertView.setTag(mv);
}else{
mv = (MyView)convertView.getTag();
}
mv.tv.setText(titles.get(position));
mv.tv.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Log.d("abd---", Integer.toString(pos));
}});
mv.btn.setText(titles.get(position));
/**
* 组件的事件也是在这里做
*/
mv.btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
Toast.makeText(context, "我是Title:"+titles.get(pos)+" 的button", Toast.LENGTH_LONG).show();
}
});
return convertView;
}
/**
* 自定义的一个View
* @author Administrator
*
*/
private class MyView{
TextView tv;
Button btn;
}
}
/*mail.xml*/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 如果是ListActivity,android:id属性的值不能随便取,只能取ID为="@android:id/list",如果只是应用ListView这个容器,id就随便啦 -->
<ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView>
</LinearLayout>
----------------------------------
/* layout.xml*/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/Title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>