关于android中BaseAdapter的理解
来源:互联网 发布:网络托管 编辑:程序博客网 时间:2024/05/10 07:22
对于我这样还没有入门的人说,学这个android真是拿到一个API就不知道干嘛。每拿到一个API就得去百度寻找答案,现在讲述一下自己对这个BaseAdapter的几点理解。
这几天跟着我项目组的人完成一个文件管理器的功能,因为要显示文件的图片以及相关的文件信息,然后这里是采用了一个FileAdapter继承于BaseAdapter这个类。因为适配器的主要作用是用来给诸如Spinner,ListView,GridView来填充数据的。可以用来将不同的数据映射到View上。写适配器主要是得重写四个方法:getCount,getItem,getItemId,getView。
现在对这个做一下具体的分析,为啥必须得重写这四个方法。我在 eclipse跟踪的时候:
首先进去的getCount()这个方法,这返回的是list里面的个数,即你要显示在View上的item,
紧接着就是根据你的item如何来绘制一个view了,即getView可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。也正是在这个过程中完成了适配器的主要转换功能,把数据和资源以开发者想要的效果显示出来。即有多少个Item就调用多少次ListView,使得ListView的使用更为简单和灵活。
而getItem和getItemId方法将会在调用ListView的响应方法的时候被调用到。所以要保证ListView的各个方法有效的话,这两个方法也得重写。
- class FileAdapterextends BaseAdapter{
- Context mContext;
- LayoutInflater mLInflater;
-
-
- public FileAdapter (Context context){
- this.mContext=context;
- //mListFile=getFileData(path);
- this.mLInflater= LayoutInflater.from(context);
- }
-
- @Override
- public int getCount(){
- if(mListFile.size()!=0&&mListFile!=null){
- return mListFile.size();
- }else{
- return 0;
- }
- }
- @Override
- public Object getItem(intposition) {
- return mListFile.get(position);
- }
- @Override
- public long getItemId(intposition) {
- return position;
- }
- @Override
- public View getView(intposition, View convertView, ViewGroup parent) {
-
- ViewHolder holder = null ;
- if(convertView==null){
- convertView = mLInflater.inflate(R.layout.sd_card_item,null);
- holder = new ViewHolder();
- holder.setFileName((TextView)convertView.findViewById(R.id.filename));
- //holder.setmLastTime((TextView)convertView.findViewById(R.id.time));
- holder.setImageIcon((ImageView)convertView.findViewById(R.id.image));
- convertView.setTag(holder);
- }else{
- holder = (ViewHolder)convertView.getTag();
- }
- int id = 0;
- String type = mListFile.get(position).getFileType();
- if(type=="0"){
- id = R.drawable.up1;
- }elseif(type=="1"){
- id = R.drawable.sdcard0;
- }elseif(type=="2"){
- id = R.drawable.folder2;
- }elseif(type=="3"){
- id= R.drawable.other3;
- }elseif(type=="55"){
- id=R.drawable.none;
- }
-
- holder.getFileName().setText(mListFile.get(position).getFileName());
- holder.getImageIcon().setImageBitmap(BitmapFactory.decodeResource(mContext.getResources(),id));
- holder.getmLastTime().setText(mListFile.get(position).getFileLastTime());
-
- return convertView;
- }
-
- }
- private class ViewHolder {
-
- TextView fileName;
- TextView mLastTime;
- ImageView imageIcon;
-
- public TextView getFileName(){
- return fileName;
- }
- public void setFileName(TextView fileName){
- this.fileName= fileName;
- }
- public TextView getmLastTime(){
- return mLastTime;
- }
- public void setmLastTime(TextView mLastTime){
- this.mLastTime= mLastTime;
- }
- public ImageView getImageIcon(){
- return imageIcon;
- }
- public void setImageIcon(ImageViewimageIcon) {
- this.imageIcon= imageIcon;
- }
-
- }
代码中mListFile 为这个自定义的类型List;相信有上面部分还是相对来说比较好理解的!
0 0
- 关于android中BaseAdapter的理解
- 关于android中BaseAdapter的理解
- Android中BaseAdapter的理解
- Android中BaseAdapter的理解
- Android中BaseAdapter的理解
- Android中BaseAdapter的理解
- Android中BaseAdapter的理解【IT168技术】
- Android ListView BaseAdapter的理解
- 关于Android 中的BaseAdapter用法理解
- Android中关于Adapter的使用(下)BaseAdapter
- Android中关于Adapter的使用(下)BaseAdapter
- Android中关于Adapter的使用(下)BaseAdapter
- 关于BaseAdapter的getView方法的理解
- Android中BaseAdapter的理
- Android ListView理解,BaseAdapter
- Android ListView理解,BaseAdapter
- Android ListView理解,BaseAdapter
- android BaseAdapter getView 理解
- 开源视频大数据处理框架(Open Source Video Manage&Processing&Search Center)
- 学习springmvc时,配置spring配置文件时,不能提示?以及配置文件头可以从jar包里找吧?
- jquery Ajax 实例 ($.ajax、$.post、$.get)
- String.format()用法
- 【IOS开发】实时显示摄像头内容
- 关于android中BaseAdapter的理解
- 汉字点阵字库原理
- What is JavaServer Pages?
- Codeforces 572D,DP
- swift总结4
- Treasure (BNUOJ 44540 栈应用)
- linux服务器互传文件
- 创建守护进程步骤与setsid() -- linux
- 链队列的入队、出队