`
Small嗳TT
  • 浏览: 11710 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

自定义的一个Adapter

阅读更多
引用

今天实现了一个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写这些东西,写的不好还请包涵,也希望说大家能够从中得到点启发,更希望大家能给点建议,共同进步!!
分享到:
评论

相关推荐

    自定义Adapter 实例

    在Android开发中,Adapter是一个非常重要的组件,它起到了数据源与UI展示之间的桥梁作用。当我们需要将数据集合显示在ListView、GridView或者RecyclerView等视图组件时,就需要自定义Adapter来实现这一功能。本实例...

    自定义ViewGroup+Adapter

    2. 创建`Adapter`:根据数据源创建一个自定义`Adapter`,实现`getView()`方法来生成对应的视图。 3. 绑定数据:在`ViewGroup`的构造函数或者初始化方法中设置`Adapter`,并将`Adapter`的数据源与视图进行绑定。 4. ...

    Android自定义adapter的listview

    为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...

    Android自定义Adapter适配器

    总之,自定义Adapter是Android开发中的一个重要技能,它允许开发者灵活地控制数据的显示方式,同时提高了应用的可扩展性和可维护性。通过实践和研究这个自定义Adapter的代码,你将能更好地掌握这一核心技术。

    GridView用自定义Adapter

    数据绑定是自定义Adapter的核心,通常我们会创建一个布局文件来定义每个单元格的样式,然后在`getView()`中实例化这个布局,并将数据绑定到对应的控件上。例如,如果数据源是包含图片和文字的列表,我们可能需要将...

    Android之自定义Adapter的ListView

    接着,创建了一个名为`ListViewAdapter`的自定义Adapter,继承自`BaseAdapter`,并传入上下文和数据集作为构造函数参数。然后,通过`listView.setAdapter(listViewAdapter)`将Adapter绑定到ListView上。 在`getView...

    自定义Adapter适应ListView和GridView

    自定义Adapter是实现这两种视图高效、灵活展示数据的关键。本文将深入解析如何根据CSDN鸿洋大神的博客,自定义一个通用的Adapter,以满足不同场景下的ListView和GridView的适配器需求。 首先,理解Adapter的作用。...

    listview 自定义adapter的例子demo

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据集合,并且支持滚动操作。在实际应用中,为了满足各种界面设计需求,通常需要自定义ListView的Adapter。本示例将详细介绍如何自定义ListView的...

    android gridview adapter 实例

    1. **自定义Adapter**: 创建一个新的Adapter类,例如`MyGridViewAdapter`,需要实现以下方法: - `getCount()`:返回数据源的大小,决定GridView的行数。 - `getItem(int position)`:返回指定位置的数据项,...

    ListView中使用自定义Adapter及时更新数据

    本篇将详细讲解如何在ListView中使用自定义Adapter来实现数据的及时更新。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来与数据源进行交互,Adapter是连接数据集和视图的桥梁。它负责从数据集中...

    自定义Adapter

    在Android开发中,Adapter是一个非常重要的组件,它作为数据源和UI组件之间的桥梁,负责将数据转换成可显示的视图。"自定义Adapter"这个主题主要关注如何正确地创建和使用自定义的Adapter,以及解决在使用过程中可能...

    适配器Adapter使用示例

    自定义Adapter时,首先你需要创建一个新的Adapter类,扩展BaseAdapter或ArrayAdapter。然后在构造函数中传入数据源和上下文。接着,实现上述方法以完成对列表项的定制。例如: ```java public class CustomAdapter ...

    自定义listview 实现仿qq聊天列表左滑删除效果

    2. Java代码:自定义Adapter的实现,包含触摸事件处理和动画逻辑。 3. 资源图片:用于按钮或其他视觉元素的图片资源。 4. 风格和主题:可能包括自定义的动画效果和颜色样式。 总结来说,实现“自定义listview 实现...

    ListView的自定义适配器Adapter

    在Android中,Adapter是一个接口,通常我们会实现BaseAdapter或者它的子类,如ArrayAdapter,来满足我们的需求。 自定义适配器的基本步骤如下: 1. **创建数据模型(Model)**:首先,你需要定义一个数据模型类,...

    自定义万能Adapter和自定义多变布局可交互ListView

    默认的Adapter是BaseAdapter,但通常我们会根据需求自定义Adapter,以便更好地适应不同的数据结构和界面展示。 自定义万能Adapter的核心在于灵活性和复用性。这种Adapter需要能够处理多种类型的View,以适应不同的...

    Android自定义下拉刷新ListView

    6. **代码实现**:在代码中,我们需要初始化ListView,设置自定义Adapter,监听滑动手势,并在适当的时候调用刷新接口。此外,还需要处理一些细节问题,例如防止在刷新过程中用户再次触发刷新,以及处理刷新失败后的...

    android 滑动删除的listview(自定义view)

    - 自定义一个Adapter,继承自BaseAdapter,用于填充ListView的数据。 - 在getView()方法中,创建并设置自定义的滑动删除View,同时关联数据。 - 在Adapter中添加处理删除逻辑的方法,如onClickDelete(),并在...

    可重用的自定义adapter

    "可重用的自定义adapter"是Android开发中的一个核心概念,允许开发者根据需求定制ListView、GridView等控件的数据展示方式。本项目基于Android Studio,对于使用Eclipse的开发者可能需要进行一些转换。 自定义...

    安卓listview自定义adapter

    安卓listview自定义adapter包括demo和一些其他自定义绑定的代码

    ViewPager实现的轮播图广告自定义视图网络图片

    总的来说,实现一个类似京东首页的广告轮播图,需要结合ViewPager的特性,自定义Adapter加载网络图片,设置自动轮播机制,监听滑动事件,以及进行必要的性能优化。在实际开发中,还需要根据具体需求进行调整,以满足...

Global site tag (gtag.js) - Google Analytics