为24小时格式创建太多适配器到12小时格式时间更改

时间:2014-12-15 13:52:37

标签: android listview android-activity android-listview android-adapter

我有一个应用程序,可以在所有位置显示当前时间,但用户可以从设置中更改时间格式

用户是24小时格式的显示时间

24 hour time

用户选择设置

Open settings

用户更改时间格式

Change Time format

时间更改为新格式

New format

这是正常的,没有任何错误。真正的问题是我强烈感觉使用的编码设计存在严重缺陷

编码设计:

1)我创建了一个包含所有时区信息的JSON文件(这里显示了一些内容)

{
"TimeZones":[
  {
    "value": "Dateline Standard Time",
    "abbr": "DST",
    "offset": "-12",
    "isdst": false,
    "text": "(UTC-12:00) International Date Line West"
  },

  {
    "value": "Hawaiian Standard Time",
    "abbr": "HST",
    "offset": "-10",
    "isdst": false,
    "text": "(UTC-10:00) Hawaii"
  },
  {
    "value": "Alaskan Standard Time",
    "abbr": "AKDT",
    "offset": "-8",
    "isdst": true,
    "text": "(UTC-09:00) Alaska"
  },
  {
    "value": "Pacific Standard Time (Mexico)",
    "abbr": "PDT",
    "offset": "-7",
    "isdst": true,
    "text": "(UTC-08:00) Baja California"
  },
  {
    "value": "Pacific Standard Time",
    "abbr": "PDT",
    "offset": "-7",
    "isdst": true,
    "text": "(UTC-08:00) Pacific Time (US & Canada)"
  },

2)我将这些原始数据和存储的内容读入两个Hashmaps a)二十四小时 b)十二小时

3)二十四小时 Hashmap以24小时格式存储时间,十二小时 Hashmap以12小时格式存储时间

4)我创建了两个字符串数组列表来保存这些Hashmaps

  

stringArrayList.add(twentyfourhour); //将24小时hashmap添加到   arraylist stringArrayListtwelve.add(12小时);   //将12小时hashmap添加到arraylist

5)根据用户选择的小时格式,我创建一个新的处理程序并使用三元运算符分配给Adapter

//Assign ArrayList Strings based on Hour format 0 = 24 hour format, 1 = 12 hour format
listAdapter = (hour_counter == 0) ? new TwocolumnAdapter(object, stringArrayList) : new TwocolumnAdapter(object,stringArrayListtwelve);

// Set the ArrayAdapter as the ListView's adapter                    
mainListView.setAdapter( listAdapter );

我的问题:

我是否可以在不创建新适配器的情况下更新我的适配器?(如第5点所述)

请告诉我更好的方法,我每次都在创造新物品。

0 个答案:

没有答案