您的位置:首页 > 其它

BaseAdapter 作为 ListView 适配器

2015-04-04 18:38 225 查看
ListView的填充需要一个adapter,它用来把数据映射到ListView中。以BaseAdapter作为其适配器为例。

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

public class MyAdapter extends BaseAdapter {

private Context context; //声明一个上下文对象,后续的getView方法加载布局时需要

public MyAdapter (Context context)  //通过构造方法传递上下文对象
{
this.context=context;
}

@Override
public int getCount() {  //控制该Adapter包含列表项的个数
return 0;
}

@Override
public Object getItem(int position) {  //决定第position处的列表项内容
return null;
}

@Override
public long getItemId(int position) {  //决定第position处的列表项ID
return 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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: