BaseAdapter 作为 ListView 适配器

来源:互联网 发布:海洋大仙网络电话录音 编辑:程序博客网 时间:2024/06/05 05:12

ListView的填充需要一个adapter,它用来把数据映射到ListView中。以BaseAdapter作为其适配器为例。


BaseAdapter作为适配器使用相对较复杂,但它却能够实现多种列表布局。在BaseAdapter中需要重写一个类继承自BaseAdapter,并且重新实现里面的方法。例如自定义一个类MyAdapter。

public class MyAdapter extends BaseAdapter {private Context context; //声明一个上下文对象,后续的getView方法加载布局时需要public MyAdapter (Context context)  //通过构造方法传递上下文对象{this.context=context;}@Overridepublic int getCount() {  //控制该Adapter包含列表项的个数return 0;}@Overridepublic Object getItem(int position) {  //决定第position处的列表项内容return null;}@Overridepublic long getItemId(int position) {  //决定第position处的列表项IDreturn 0;}@Override      //决定第position处的列表项组件public View getView(int position, View convertView, ViewGroup parent) {return null;}}


getView方法是重点,应当注意

@Override      //决定第position处的列表项组件public View getView(int position, View convertView, ViewGroup parent) {if(convertView==null) {convertView=LayoutInflater.from(context).inflate(R.layout.news_item,null);}/* 以下为在news_item布局中的控件*/TextView tvTitle=(TextView)convertView.findViewById(R.id.tvTitle);TextView tvDesc=(TextView)convertView.findViewById(R.id.tvDesc);TextView tvTime=(TextView)convertView.findViewById(R.id.tvTime);ImageView ivPic=(ImageView)convertView.findViewById(R.id.ivPic);return convertView;}}


在activity文件中:

</pre><pre name="code" class="java">public class NewsActivity extends Activity {private ListView lvNews;private MyAdapter adapter;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                lvNews=(ListView)findViewById(R.id.lvNews);        adapter=new MyAdapter(this);                lvNews.setAdapter(adapter);    }}





0 0
原创粉丝点击