千家信息网

Android开发中如何进行数据绑定Data Binding

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Android开发中如何进行数据绑定Data Binding,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前面提到AndroidGr
千家信息网最后更新 2026年11月01日Android开发中如何进行数据绑定Data Binding

Android开发中如何进行数据绑定Data Binding,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

前面提到AndroidGraphics2DTutorial说过它是ListActivity派生出来的。ListActivity中显示的是 ListView,ListView和Gallery ,Spinner有一个共同点:它们都是AdapterView的子类。AdapterView的显示可以通过数据绑定来实现,数据源可以是数组或是数据库记录,数据源和AdapterView是通过Adapter作为桥梁。通过Adapter,AdatperView可以显示数据源或处理用户选取时间, 如:选择列表中某项。

AndroidGraphics2DTutorial读取AndroidManifest.xml中Intent-Filter为


的所有Activity,以列表方式显示。使用了Android API 自带的SimpleAdapter。 来看看AndroidGraphics2DTutorial.java 中相关代码:

public class AndroidGraphics2DTutorial extends ListActivity {       private static final String SAMPLE_CATEGORY               ="com.pstreets.graphics2d.SAMPLE_CODE";           @Override      public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);           setListAdapter(new SimpleAdapter(this, getData(),         android.R.layout.simple_list_item_1, new String[] { "title" },         new int[] { android.R.id.text1 }));       getListView().setTextFilterEnabled(true);       }         protected List getData() {       List myData = new ArrayList();          Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);       mainIntent.addCategory(SAMPLE_CATEGORY);          PackageManager pm = getPackageManager();       List list = pm.queryIntentActivities(mainIntent, 0);           if (null == list)        return myData;           String[] prefixPath;          prefixPath = null;            int len = list.size();            Map entries = new HashMap();            for (int i = 0; i < len; i++) {        ResolveInfo info = list.get(i);        CharSequence labelSeq = info.loadLabel(pm);    String label = labelSeq != null ? labelSeq.toString()          : info.activityInfo.name;        String[] labellabelPath = label.split("/");            String nextLabel = prefixPath == null ? labelPath[0]          : labelPath[prefixPath.length];         if ((prefixPath != null ? prefixPath.length : 0)     == labelPath.length - 1) {         addItem(myData,           nextLabel,           activityIntent(             info.activityInfo.applicationInfo.packageName,             info.activityInfo.name));        } else {         if (entries.get(nextLabel) == null) {          addItem(myData, nextLabel, browseIntent(nextLabel));          entries.put(nextLabel, true);         }        }            }       Collections.sort(myData, sDisplayNameComparator);         return myData;      }            private final static Comparator sDisplayNameComparator     = new Comparator() {       private final Collator collator = Collator.getInstance();         public int compare(Map map1, Map map2) {        return collator.compare(map1.get("title"), map2.get("title"));       }      };            protected Intent activityIntent(String pkg, String componentName) {       Intent result = new Intent();       result.setClassName(pkg, componentName);       return result;      }         protected Intent browseIntent(String path) {       Intent result = new Intent();       result.setClass(this, AndroidGraphics2DTutorial.class);       return result;      }         protected void addItem(List data, String name, Intent intent) {       Map temp = new HashMap();       temp.put("title", name);       temp.put("intent", intent);       data.add(temp);      }         @Override      protected void onListItemClick(ListView l, View v,         int position, long id) {       Map map = (Map) l.getItemAtPosition(position);       Intent intent = (Intent) map.get("intent");       startActivity(intent);      }     }

使用数据显示Layout,上面代码中

setListAdapter(new SimpleAdapter(this, getData(),
android.R.layout.simple_list_item_1, new String[] { "title" },
new int[] { android.R.id.text1 }));

为ListActivity中ListView 指定Adapter,这个Adapter的数据源为getData(),getData()从Manifest.xml中查找出所有符合条件的示例 Activity列表。 这里DataSource是静态的从文件中读取,如果DataSource为数组或是其它数据源,如果程序中修改数值的内容,则你应该 notifyDataSetChanged()来通知UI数据有变动。UI则会刷新显示以反映数据变化。简单的说Android数据绑定和.Net WinForm ,WPF 中数据绑定类似。

处理用户选取事件,AdapterView.OnItemClickListener()可以用来处理选取事 件,对于ListActivity,可以用protected void onListItemClick(ListView l, View v, int position, long id)。AndroidGraphics2DTutorial中的实现是用户选取Activity名称好,则启动对应的Activity。

上面代码中使用SimpleAdapter,并使用Android提供的android.R.layout.simple_list_item_1 来显示数据,Andrid也允许使用自定义的Layout来显示数据。

关于Android开发中如何进行数据绑定Data Binding问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 数据源 代码 用户 问题 处理 开发 内容 数组 更多 帮助 解答 易行 简单易行 事件 共同点 可以通过 名称 子类 小伙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 百单网互联网科技有限公司怎么样 广州大一互联网络科技有限公司 互联网科技公司起名 湖南永感互联网科技有限公司 互联网科技有限公司图片 互联网金融公司科技 易通互联网络科技有限公司 天扬科技互联网广告 顺网科技2021年互联网排名 海南科技产业互联网平台 青岛中康互联网医疗科技有限公司 昭通云南众福互联网科技有限公司 宝灵互联网科技有限公司 未来五年的互联网科技 厦门江牛科技互联网 互联网科技年终奖 从那以后互联网科技有限公司 互联网时代高科技布局 亚光科技低轨卫星互联网 科技互联网龙头 互联网巨头反垄断金融科技 互联网与未来科技 云电互联网科技 撒么互联网科技公司 中正互联网科技招聘 成都仁贤领冠互联网科技有限公司 广西拼得多互联网科技有限公司 黑科技 体验场景 互联网大会 互联网科技创业有什么好项目
0