当前位置:  编程技术>移动开发
本页文章导读:
    ▪ListView分门别类展示        ListView分类展示 转载:http://blog.csdn.net/z_guijin/article/details/6630620   . 引言       在Android开发过程中往往有这样的需求,将ListView中的内容按年,月,日进行分类显示,要实现这样的效果我.........
    ▪ 运用startActivityResult()保存Listview滚动条位置        使用startActivityResult()保存Listview滚动条位置 有关于startActivityForResult(): 父活动(caller)中有: startActivityForResult(Intent,requestCode)//启动一个activity包含参数请求码和具体的intent数据,其中请求码可.........
    ▪ jquery mobile开发记事簿实例       jquery mobile开发记事本实例 下面的连接是本人编写翻译的老外的系列文,主要讲解了使用jquery mobile搭配BDD测试框架jassmine进行开发一个简单的记事本,其中http://tech.it168.com/a2011/0714/1218/000001218.........

[1]ListView分门别类展示
    来源: 互联网  发布时间: 2014-02-18
ListView分类展示
转载:http://blog.csdn.net/z_guijin/article/details/6630620

 

. 引言

 

    在Android开发过程中往往有这样的需求,将ListView中的内容按年,月,日进行分类显示,要实现这样的效果我们可能有很多种方法,

 

    如:多ListView拼合,自定义ListView组件等,下面介绍一种比较简单,而且实现结构清晰的实现方式,效果图及实现如下。

 

2. 效果图

 

 

3. 功能实现

 

    (1) 主布局(main.xml)实现:

 

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"  
        android:orientation = "vertical"  
        android:layout_width = "fill_parent"  
        android:layout_height = "fill_parent"  
        >  
        <ListView  
            android:id = "@+id/categoryList"  
            android:layout_width = "fill_parent"   
            android:layout_height = "fill_parent"  
            />  
    </LinearLayout>   

(2) 主Activity实现:

package com.flora;  
import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ArrayAdapter;  
import android.widget.ListView;  
import android.widget.TextView;  
public class ListViewCategoryActivity extends Activity {  
      
    private String [] mContacts = {"马英才", "张三", "李四"};  
    private String [] mMusic = {"素顔", "庐州月", "半城烟沙"};  
    private String [] mEBook = {"拆掉思维里的墙", "淡定力", "人脉决定命脉"};  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        mCategoryAdapter.addCategory("人名", new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mContacts));  
          
        mCategoryAdapter.addCategory("音乐",new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mMusic));  
          
        mCategoryAdapter.addCategory("书籍",new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mEBook));  
          
        ListView categoryList = (ListView) findViewById(R.id.categoryList);  
          
        categoryList.setAdapter(mCategoryAdapter);  
    }  
      
    private CategoryAdapter mCategoryAdapter = new CategoryAdapter() {  
        @Override  
        protected View getTitleView(String title, int index, View convertView, ViewGroup parent) {  
            TextView titleView;  
              
            if (convertView == null) {  
                titleView = (TextView)getLayoutInflater().inflate(R.layout.title, null);  
            } else {  
                titleView = (TextView)convertView;  
            }  
              
            titleView.setText(title);  
              
            return titleView;  
        }  
    };  
      
}

 (3) Adapter实现:

package com.flora;  
import java.util.ArrayList;  
import java.util.List;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.Adapter;  
import android.widget.BaseAdapter;  
public abstract class CategoryAdapter extends BaseAdapter {  
    private List<Category> categories = new ArrayList<Category>();  
      
    public void addCategory(String title, Adapter adapter) {  
        categories.add(new Category(title, adapter));  
    }  
      
    @Override  
    public int getCount() {  
        int total = 0;  
          
        for (Category category : categories) {  
            total += category.getAdapter().getCount() + 1;  
        }  
          
        return total;  
    }  
    @Override  
    public Object getItem(int position) {  
        for (Category category : categories) {  
            if (position == 0) {  
                return category;  
            }  
              
            int size = category.getAdapter().getCount() + 1;  
            if (position < size) {  
                return category.getAdapter().getItem(position-1);  
            }  
            position -= size;  
        }  
          
        return null;  
    }  
    @Override  
    public long getItemId(int position) {  
        return position;  
    }  
      
    public int getViewTypeCount() {  
        int total = 1;  
          
        for (Category category : categories) {  
            total += category.getAdapter().getViewTypeCount();  
        }  
          
        return total;  
    }  
    public int getItemViewType(int position) {  
        int typeOffset = 1;  
          
        for (Category category : categories) {  
            if (position == 0) {  
                return 0;  
            }  
              
            int size = category.getAdapter().getCount() + 1;  
            if (position < size) {  
                return typeOffset + category.getAdapter().getItemViewType(position - 1);  
            }  
            position -= size;  
              
            typeOffset += category.getAdapter().getViewTypeCount();  
        }  
          
        return -1;  
    }  
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        int categoryIndex = 0;  
          
        for (Category category : categories) {  
            if (position == 0) {  
                return getTitleView(category.getTitle(), categoryIndex,convertView, parent);  
            }  
            int size = category.getAdapter().getCount()+1;  
            if (position < size) {  
                return category.getAdapter().getView(position - 1, convertView, parent);  
            }  
            position -= size;  
              
            categoryIndex++;  
        }  
          
        return null;  
    }  
      
    protected abstract View getTitleView(String caption,int index,View convertView,ViewGroup parent);  
      
} 

  (4) 分类ValueBean实现:

package com.flora;  
import android.widget.Adapter;  
public class Category {  
    private String mTitle;  
      
    private Adapter mAdapter;  
    public Category(String title, Adapter adapter) {  
        mTitle = title;  
        mAdapter = adapter;  
    }  
      
    public void setTile(String title) {  
        mTitle = title;  
    }  
      
    public String getTitle() {  
        return mTitle;  
    }  
      
    public void setAdapter(Adapter adapter) {  
        mAdapter = adapter;  
    }  
      
    public Adapter getAdapter() {  
        return mAdapter;  
    }  
      
} 

 (5) 分类Title实现:

    <?xml version="1.0" encoding="utf-8"?>  
    <TextView  
        xmlns:android = "http://schemas.android.com/apk/res/android"  
        android:layout_width = "match_parent"  
        android:layout_height = "match_parent"  
        android:minHeight = "30dip"  
        android:gravity = "center_vertical"  
        android:paddingLeft = "10dip"  
        android:background = "@color/title_background_color"  
        />   
 

    
[2] 运用startActivityResult()保存Listview滚动条位置
    来源: 互联网  发布时间: 2014-02-18
使用startActivityResult()保存Listview滚动条位置

有关于startActivityForResult():

父活动(caller)中有:

startActivityForResult(Intent,requestCode)//启动一个activity包含参数请求码和具体的intent数据,其中请求码可以用来识别子活动

onActivityResult(int requestCode, int resultCode, Intent data) //当子活动结束时(finish())时调用,在子活动中可以通过setResult(int resultCode, Intent data)来设定返回的结果码和intent数据。

子活动(subActivity)中有:

setResult(123, intent);//设定返回给启动该activity的caller的结果值和intent数据。

finish();//结束该方法,同时会调用caller的onActivityResult()方法

 

滚动条位置保存方法:

一、将当前listview的滚动条位置传递给子活动。

二、在子活动中重写onKeyDown()方法,监听单击back事件,并在其中将position值再传回给父活动。

三、在声明一个全局变量,在onActivityResult()中改变该变量的值,再在初始化列表的方法中使用该全局变量来设置列表的滚动条的当前位置。

 

注意:

一、该onActivityResult()方法是在onResume()方法之前调用的。

 

二、在父活动的onActivityResult()方法中是使用第一个参数requestCode识别返回的子活动的。我实验过不能用第二个参数resultCode识别返回的子活动,而且方法中的定义也是这么写,我猜resultCode应该表示一个子活动类别吧,而resultCode则表示这个类别中的一个元素。

RequestCode:The integer request code originally supplied to startActivityForResult(), allowing you to identify who this result came from.


    
[3] jquery mobile开发记事簿实例
    来源: 互联网  发布时间: 2014-02-18
jquery mobile开发记事本实例
下面的连接是本人编写翻译的老外的系列文,主要讲解了使用jquery mobile
搭配BDD测试框架jassmine进行开发一个简单的记事本,其中
http://tech.it168.com/a2011/0714/1218/000001218224_all.shtml )介绍了如何使用另外一个适合移动开发的Sencha Touch框架开发同样的一个记事本应用,有兴趣的读者可以进行学习。本文将介绍一个基于行为驱动模式开发(behavior-driven approach简称BDD)的框架Jasmine framework.(https://github.com/pivotal/jasmine/wiki ),在BDD开发中,我们将就每一个步骤都通过该开发框架来进行不断重构,以达到快速开发的目的。

下面是文章四部分的连接:

第一讲http://tech.it168.com/a2012/0111/1301/000001301499_all.shtml


第二讲 http://tech.it168.com/a2012/0302/1319/000001319223_all.shtml

第三讲 http://tech.it168.com/a2012/0130/1304/000001304764.shtml


第四讲  http://tech.it168.com/a2012/0209/1309/000001309674.shtml

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3