我们一般需要自定义adapter 这里就需要继承BaseAdapter
adapter在MVC开发模式中,是控制层
baseAdapter 继承这个方法必须重写 四个方法
1. getcont 方法 这个是返回总记录数
2. object getItem 方法 这个方法是返回选项内容
3 .getItemId 方法 这个方法是返回选项内容ID
4.getView 方法 这个方法显示一行行的记录(最重要的方法)
(一) 首先编写xml布局文件
activity_main.xml
ziyuan.xml
(二)开始编写自定义的adapter(实现了内容的性能优化)
myadapter.java
import java.util.List;
import android.content.Context;
import android.content.pm.LabeledIntent;
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.ImageView;
import android.widget.TextView;
import android.widget.Toast;
//自定义适配器
public class MyAdapters extends BaseAdapter {
private Context mContext; //定义一个视图
private List text;
private List images;
private List text1;
private List btn1;
private int temp;
class ItemViewCache //内部类 元素的缓冲区
{
public TextView mTextView;
public ImageView mImageView;
public TextView mTextView2;
public Button btn1;
}
public MyAdapters(Context mContext, List text, List images,List text1,List btn1) {
super();
this.mContext = mContext;
this.text = text;
this.images = images;
this.btn1=btn1;
this.text1=text1;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return text.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
// arg0 相当于position 这个动态的增长
@Override
public View getView(final int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
//优化ListView
if(arg1==null)
{
arg1=LayoutInflater.from(mContext).inflate(R.layout.ziyuan,null);
ItemViewCache viewcache=new ItemViewCache();
viewcache.mTextView =(TextView)arg1.findViewById(R.id.Text1);
viewcache.mImageView=(ImageView)arg1.findViewById(R.id.Image);
viewcache.mTextView2=(TextView)arg1.findViewById(R.id.Text2);
viewcache.btn1=(Button)arg1.findViewById(R.id.btn1);
arg1.setTag(viewcache);
}
ItemViewCache cache=(ItemViewCache)arg1.getTag();
cache.mTextView.setText(text.get(arg0));
cache.mImageView.setImageResource(images.get(arg0));
cache.btn1.setText(btn1.get(arg0));
cache.mTextView2.setText(text1.get(arg0));
cache.btn1.setOnClickListener(new OnClickListener() {
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
// arg0 相当于position 这个动态的增长 当前操作的第几行
Toast.makeText(mContext,"你选择的是"+text.get(arg0),Toast.LENGTH_SHORT).show();
}
});
return arg1;
}
}
注意:在自定义中适配器,设置对按钮的监听 arg0 相当于position 这个动态的增长表示当前操作的第几行
(三)编写主类MainActvivity.java
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
List text1=new ArrayList();
ListView listview=null;
List text2=new ArrayList();
List btn1=new ArrayList();
List list2=new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview=(ListView)findViewById(R.id.listview);
text1.add(0,"画江湖");
text1.add(1,"画江湖之不良人");
text1.add(2,"画江湖之灵主");
text1.add(3,"画江湖之换世门生");
text2.add(0,"主角:小五");
text2.add(1,"主角:李星云");
text2.add(2,"主角:百里登风");
text2.add(3,"主角:念阳枭");
btn1.add(0,"观看");
btn1.add(1,"观看");
btn1.add(2,"观看");
btn1.add(3,"观看");
list2.add(0,R.drawable.a);
list2.add(1,R.drawable.b);
list2.add(2,R.drawable.c);
list2.add(3,R.drawable.d);
MyAdapters adapter=new MyAdapters(this,text1,list2,text2,btn1);
listview.setAdapter(adapter);
/*
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View arg1, int arg2,
long arg3) {
Toast.makeText(MainActivity.this,"你选择了",Toast.LENGTH_SHORT).show();
}
});*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//public void click1(View view) //
//{
// Toast.makeText(MainActivity.this,"你选择的是"+,Toast.LENGTH_SHORT).show();
//}
}
注意:在主类中添加对按钮的事件监听,无法实现对标题的动态获取
最后给大家看实现效果