引用
今天实现了一个Adapter,通过自定义的XML文件内容来初始化,感觉还行,分享下,也请各位大虾给点意见~~
代码太多了,故只贴一小部分,请见谅~~
public class UIAdapter extends ArrayAdapter<Tag>
引用
反射机制需用到的方法名初始化:
/**
* 用于设置getItem方法中的反射的方法名itemType--------->method
*/
private final static void initMethodMap(){
methodMap.put(XmlConstant.ITEM_TYPE_TEXT, "initTextView");
methodMap.put(XmlConstant.ITEM_TYPE_BUTTON, "initButton");
methodMap.put(XmlConstant.ITEM_TYPE_IMAGE, "initImageView");
methodMap.put(XmlConstant.ITEM_TYPE_RADIOBUTTON, "initRadioButton");
methodMap.put(XmlConstant.ITEM_TYPE_IMAGEBUTTON, "initImageButton");
methodMap.put(XmlConstant.ITEM_TYPE_CHECKBOX, "initCheckBox");
}
private void initItem(RelativeLayout rLayout, Tag item){
try {
View view = initUniform(rLayout, item);
if(view == null){
return;
}
//通过反射机制执行相应的方法
String itemType = item.getAttributes().get(XmlConstant.ATTR_TYPE);
Method method = this.getClass().getMethod(methodMap.get(itemType),
new Class[]{View.class, Tag.class});
method.invoke(this, new Object[]{view, item});
} catch (Exception e) {
e.printStackTrace();
}
}
引用
不同的控件的各自的设置,里面的具体实现我省略了:
//------------一下是各种具体控件类型的具体属性设置,通过反射机制来调用----------------------
//注意:方法一定要为public,否则将找不到方法
public void initTextView(View view, Tag item){...}
public void initButton(View view, Tag item){...}
public void initImageView(View view, Tag item){...}
public void initRadioButton(View view, Tag item){...}
public void initImageButton(View view, Tag item){...}
public void initCheckBox(View view, Tag item){...}
引用
子类通过重写这个方法来设置具体的监听
protected void bindListener(View view, Tag item){
}
引用
其中:Tag为自己定义的一个保存Xml信息的类,通过Xml的读取实例化,其属性如下:
protected String tagName;
protected Tag parent;
protected HashMap<String, List<Tag>> children;//通过tagName--->名为tagName的子Tag的List
protected HashMap<String, String> attributes;//属性名--->属性值
protected String text;
protected int depth = 0;//Tag的深度,root的深度为1
引用
XmlConstant中则是存储了各种Xml字段的常量。
通过构建这个Adapter,我可以很轻松的实现GridView、ListView等的设置。我现在用在自己写demo时主界面的设置(GridView),可以很轻松的通过Xml配置主界面的菜单,通过点击跳转到正在编写的模块界面中。
今天主要碰到的一个问题是ListView中的ImageButton优先级大于ListView,导致ListView的setOnItemClickListener被屏蔽掉了。网上找了下资料,发现只要将模板Xml中的Layout设置:android:descendantFocusability="blocksDescendants",以及里面的ImageButton设置:android:focusable="false"即可。
第一次来JavaEEn写这些东西,写的不好还请包涵,也希望说大家能够从中得到点启发,更希望大家能给点建议,共同进步!!
分享到:
相关推荐
在Android开发中,Adapter是一个非常重要的组件,它起到了数据源与UI展示之间的桥梁作用。当我们需要将数据集合显示在ListView、GridView或者RecyclerView等视图组件时,就需要自定义Adapter来实现这一功能。本实例...
2. 创建`Adapter`:根据数据源创建一个自定义`Adapter`,实现`getView()`方法来生成对应的视图。 3. 绑定数据:在`ViewGroup`的构造函数或者初始化方法中设置`Adapter`,并将`Adapter`的数据源与视图进行绑定。 4. ...
为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...
总之,自定义Adapter是Android开发中的一个重要技能,它允许开发者灵活地控制数据的显示方式,同时提高了应用的可扩展性和可维护性。通过实践和研究这个自定义Adapter的代码,你将能更好地掌握这一核心技术。
数据绑定是自定义Adapter的核心,通常我们会创建一个布局文件来定义每个单元格的样式,然后在`getView()`中实例化这个布局,并将数据绑定到对应的控件上。例如,如果数据源是包含图片和文字的列表,我们可能需要将...
接着,创建了一个名为`ListViewAdapter`的自定义Adapter,继承自`BaseAdapter`,并传入上下文和数据集作为构造函数参数。然后,通过`listView.setAdapter(listViewAdapter)`将Adapter绑定到ListView上。 在`getView...
自定义Adapter是实现这两种视图高效、灵活展示数据的关键。本文将深入解析如何根据CSDN鸿洋大神的博客,自定义一个通用的Adapter,以满足不同场景下的ListView和GridView的适配器需求。 首先,理解Adapter的作用。...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据集合,并且支持滚动操作。在实际应用中,为了满足各种界面设计需求,通常需要自定义ListView的Adapter。本示例将详细介绍如何自定义ListView的...
1. **自定义Adapter**: 创建一个新的Adapter类,例如`MyGridViewAdapter`,需要实现以下方法: - `getCount()`:返回数据源的大小,决定GridView的行数。 - `getItem(int position)`:返回指定位置的数据项,...
本篇将详细讲解如何在ListView中使用自定义Adapter来实现数据的及时更新。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来与数据源进行交互,Adapter是连接数据集和视图的桥梁。它负责从数据集中...
在Android开发中,Adapter是一个非常重要的组件,它作为数据源和UI组件之间的桥梁,负责将数据转换成可显示的视图。"自定义Adapter"这个主题主要关注如何正确地创建和使用自定义的Adapter,以及解决在使用过程中可能...
自定义Adapter时,首先你需要创建一个新的Adapter类,扩展BaseAdapter或ArrayAdapter。然后在构造函数中传入数据源和上下文。接着,实现上述方法以完成对列表项的定制。例如: ```java public class CustomAdapter ...
2. Java代码:自定义Adapter的实现,包含触摸事件处理和动画逻辑。 3. 资源图片:用于按钮或其他视觉元素的图片资源。 4. 风格和主题:可能包括自定义的动画效果和颜色样式。 总结来说,实现“自定义listview 实现...
在Android中,Adapter是一个接口,通常我们会实现BaseAdapter或者它的子类,如ArrayAdapter,来满足我们的需求。 自定义适配器的基本步骤如下: 1. **创建数据模型(Model)**:首先,你需要定义一个数据模型类,...
默认的Adapter是BaseAdapter,但通常我们会根据需求自定义Adapter,以便更好地适应不同的数据结构和界面展示。 自定义万能Adapter的核心在于灵活性和复用性。这种Adapter需要能够处理多种类型的View,以适应不同的...
6. **代码实现**:在代码中,我们需要初始化ListView,设置自定义Adapter,监听滑动手势,并在适当的时候调用刷新接口。此外,还需要处理一些细节问题,例如防止在刷新过程中用户再次触发刷新,以及处理刷新失败后的...
- 自定义一个Adapter,继承自BaseAdapter,用于填充ListView的数据。 - 在getView()方法中,创建并设置自定义的滑动删除View,同时关联数据。 - 在Adapter中添加处理删除逻辑的方法,如onClickDelete(),并在...
"可重用的自定义adapter"是Android开发中的一个核心概念,允许开发者根据需求定制ListView、GridView等控件的数据展示方式。本项目基于Android Studio,对于使用Eclipse的开发者可能需要进行一些转换。 自定义...
安卓listview自定义adapter包括demo和一些其他自定义绑定的代码
总的来说,实现一个类似京东首页的广告轮播图,需要结合ViewPager的特性,自定义Adapter加载网络图片,设置自动轮播机制,监听滑动事件,以及进行必要的性能优化。在实际开发中,还需要根据具体需求进行调整,以满足...