文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android中EfficientAdapte如何使用

2023-05-30 22:51

关注

今天就跟大家聊聊有关Android中EfficientAdapte如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Android ListView之EfficientAdapte的使用详解

在做Android手机应用开发时, ListView是一个非常常用的控件。如何更新的使用它呢?其实SDK中的例子已经非常的完整了,并且能满足大多数的需要。

    如果大家刚开始学习ListView,我建议大家还是直接先看官方的例子好了,这样大家会学到更好的写法以及养成更好的习惯。

    下面就以EfficientAdapter为例,看看官网例子是如何使用ListView的:

    简要说明:要实现高效的Adapter,需要做两件事: 

    1. 重用getView()中的convertView,避免在不必要的时候inflating View。 

    2. 使用ViewHolder模式,避免在不必要的时候调用findViewById()。

    顺便再提一句:若继承的是ListActivity,如果在layout xml里定义了ListView,那么该ListView的ID必须是"@id/android:list",最好再包含一个ID是"@id/android:empty"的TextView,供ListView中没有数据时,显示提示文字用。如下所示:

Xml代码 

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingLeft="8dp"      android:paddingRight="8dp">     <ListView android:id="@id/android:list"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:background="#00FF00"         android:layout_weight="1"         android:drawSelectorOnTop="false"/>     <TextView android:id="@id/android:empty"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:background="#FF0000"         android:text="No data"/>  </LinearLayout>

    官网EfficientAdapter例子如下:

Java代码 

 public class List14 extends ListActivity {    private static class EfficientAdapter extends BaseAdapter {     private LayoutInflater mInflater;     private Bitmap mIcon1;     private Bitmap mIcon2;      public EfficientAdapter(Context context) {       // Cache the LayoutInflate to avoid asking for a new one each time.       mInflater = LayoutInflater.from(context);        // Icons bound to the rows.       mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_1);       mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_2);     }           public int getCount() {       return DATA.length;     }           public Object getItem(int position) {       return position;     }           public long getItemId(int position) {       return position;     }           public View getView(int position, View convertView, ViewGroup parent) {       // A ViewHolder keeps references to children views to avoid unneccessary calls       // to findViewById() on each row.       ViewHolder holder;        // When convertView is not null, we can reuse it directly, there is no need       // to reinflate it. We only inflate a new View when the convertView supplied       // by ListView is null.       if (convertView == null) {         convertView = mInflater.inflate(R.layout.list_item_icon_text, null);          // Creates a ViewHolder and store references to the two children views         // we want to bind data to.         holder = new ViewHolder();         holder.text = (TextView) convertView.findViewById(R.id.text);         holder.icon = (ImageView) convertView.findViewById(R.id.icon);          convertView.setTag(holder);       } else {         // Get the ViewHolder back to get fast access to the TextView         // and the ImageView.         holder = (ViewHolder) convertView.getTag();       }        // Bind the data efficiently with the holder.       holder.text.setText(DATA[position]);       holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);        return convertView;     }      static class ViewHolder {       TextView text;       ImageView icon;     }   }    @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setListAdapter(new EfficientAdapter(this));   }    private static final String[] DATA = {       "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam"}; }

看完上述内容,你们对Android中EfficientAdapte如何使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯