亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android中ListView數據刷新時的同步方法

2020-04-11 11:32:12
字體:
來源:轉載
供稿:網友

本文實例講述了android中ListView數據刷新時的同步方法。分享給大家供大家參考。具體實現方法如下:

public class Main extends BaseActivity {  private static final String TAG = "tag";  private static final int STATUS_CHANGE = 0;  ExpandableListView mElv;  ArrayList<GroupInfo> mGroupArray;  @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   mElv = (ExpandableListView) findViewById(R.id.contact_list);   mStatus = (TextView) findViewById(R.id.setStatus);   mGroupArray = getIntent().getParcelableArrayListExtra("groupArray");// => 取數據   mExpandableAdapter = new ExpandableAdapter(this, Main.this);   mElv.setAdapter(mExpandableAdapter);     // 異步對比服務器分組和本地分組   HandlerThread handlerThread = new HandlerThread("handler_thread");   handlerThread.start();   UpdateGroupHandler myHandler = new UpdateGroupHandler(     handlerThread.getLooper());   Message message = myHandler.obtainMessage();   message.sendToTarget();   mHandler = new Handler() {    public void handleMessage(Message msg) {     switch (msg.what) {     case STATUS_CHANGE:      // 處理UI更新等操作      updateUI();      break;     }    };   };   }  /**   * 發送消息更新UI   */  private void sendMessageToUpdateUI() {   Message msg = new Message();   msg.what = STATUS_CHANGE;   mHandler.sendMessage(msg);  // 向Handler發送消息,更新UI  }  private void updateUI() {   // 詳細的更新   mExpandableAdapter.notifyDataSetChanged();  // 更新ExpandableListView  }  /**   * 異步刷新分組的handler   *   * @author administrator   *   */  class UpdateGroupHandler extends Handler {   public UpdateGroupHandler() {   }   public UpdateGroupHandler(Looper looper) {    super(looper);   }   @Override   public void handleMessage(Message msg) {    ContactsManagerDbAdapter dbAdapter = new ContactsManagerDbAdapter(      Main.this);    dbAdapter.open();    // =>doSomeThing...    mGroupArray = groupList;    System.out.println("========數據更新后,刷新listview=========");    sendMessageToUpdateUI();   }  }  private class ExpandableAdapter extends BaseExpandableListAdapter {   Activity activity;   LayoutInflater layoutInflater;   public ExpandableAdapter(Activity a, Context context) {    activity = a;    layoutInflater = (LayoutInflater) context      .getSystemService(Context.LAYOUT_INFLATER_SERVICE);   }   public Object getChild(int groupPosition, int childPosition) {    return mGroupArray.get(groupPosition).getChildList()      .get(childPosition);   }   public long getChildId(int groupPosition, int childPosition) {    return childPosition;   }   public int getChildrenCount(int groupPosition) {    return mGroupArray.get(groupPosition).getChildList().size();   }   public View getChildView(int groupPosition, int childPosition,     boolean isLastChild, View convertView, ViewGroup parent) {    // .....    return vi;   }   public Object getGroup(int groupPosition) {    return mGroupArray.get(groupPosition);   }   public int getGroupCount() {    return mGroupArray.size();   }   public long getGroupId(int groupPosition) {    return groupPosition;   }   public View getGroupView(int groupPosition, boolean isExpanded,     View convertView, ViewGroup parent) {    GroupInfo groupInfo = mGroupArray.get(groupPosition);    String string = groupInfo.getName();    convertView = (View) layoutInflater.inflate(R.layout.group_layout,      null);    final TextView textView = (TextView) convertView      .findViewById(R.id.groupName);    if (textView != null) {     textView.setText(string);    }    return convertView;   }   public boolean hasStableIds() {    return true;   }   public boolean isChildSelectable(int groupPosition, int childPosition) {    return true;   }  } }

代碼只是提取的部分,應該沒多大影響.

上面集合mGroupArray存在數據共享,測試多次發現報錯有兩種:

=>1.java.lang.IndexOutOfBoundsException: Invalid location 3, size is 3
=>2.The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.

第一個問題,數據同步問題,我弄了下沒解決.
第二個問題,改變適配器Adapter內容時不要在后臺線程中,必須在UI線程中處理
我將上面子線程UpdateGroupHandler里的數據更新利用handler提取到了主線程賦值

Message.obj = groupList;

額,改好后測試多次,發現這兩問題都解決了,發現還是對handler理解的不夠.

發下更改的代碼段:

@Override public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  mElv = (ExpandableListView) findViewById(R.id.contact_list);  mStatus = (TextView) findViewById(R.id.setStatus);  mGroupArray = getIntent().getParcelableArrayListExtra("groupArray"); // => 取數據  mExpandableAdapter = new ExpandableAdapter(this, Main.this);  mElv.setAdapter(mExpandableAdapter);    // 異步對比服務器分組和本地分組  HandlerThread handlerThread = new HandlerThread("handler_thread");  handlerThread.start();  UpdateGroupHandler myHandler = new UpdateGroupHandler(    handlerThread.getLooper());  Message message = myHandler.obtainMessage();  message.sendToTarget();  mHandler = new Handler() {   public void handleMessage(Message msg) {    switch (msg.what) {    case STATUS_CHANGE:     // 處理UI更新等操作     updateUI(msg.obj);     break;    }   };  };  } /** * 發送消息更新UI */ private void sendMessageToUpdateUI(ArrayList<GroupInfo> groupList) {  Message msg = new Message();  msg.what = STATUS_CHANGE;  msg.obj = groupList;  mHandler.sendMessage(msg); // 向Handler發送消息,更新UI }  @SuppressWarnings("unchecked") private void updateUI(Object obj) {  // 詳細的更新  mGroupArray = (ArrayList<GroupInfo>) obj;  mExpandableAdapter.notifyDataSetChanged(); // 更新ExpandableListView } /**  * 異步刷新分組的handler  *  * @author administrator  *  */ class UpdateGroupHandler extends Handler {  public UpdateGroupHandler() {  }  public UpdateGroupHandler(Looper looper) {   super(looper);  }  @Override  public void handleMessage(Message msg) {   ContactsManagerDbAdapter dbAdapter = new ContactsManagerDbAdapter(     Main.this);   dbAdapter.open();   // =>doSomeThing...   System.out.println("========數據更新后,刷新listview=========");   sendMessageToUpdateUI(groupList);  } }

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线高清视频| 精品久久久久久国产91| 国产精品一区二区电影| 黑人巨大精品欧美一区二区| 亚洲欧美成人网| 欧美日韩国产在线| 在线观看中文字幕亚洲| 亚洲成年人影院在线| 国产精品av网站| 久久久久久噜噜噜久久久精品| 亚洲男人天堂九九视频| 精品中文字幕视频| 91久久精品美女| 欧美夜福利tv在线| 日韩视频在线免费观看| 亚洲黄色在线看| 久久久久久亚洲| 国产精品久久久久久久app| 亚洲精选中文字幕| 国产成人综合久久| 亚洲白虎美女被爆操| 91高清在线免费观看| 久久精品成人一区二区三区| 欧美成人网在线| 久久久久免费视频| 欧美国产日产韩国视频| 日本免费一区二区三区视频观看| 色综合天天狠天天透天天伊人| 裸体女人亚洲精品一区| 亚洲新声在线观看| 亚洲在线免费看| 中文字幕精品网| 国模精品一区二区三区色天香| 麻豆乱码国产一区二区三区| 在线日韩精品视频| 欧美日韩国产一区中文午夜| 中文欧美日本在线资源| 精品国产精品三级精品av网址| 久久色免费在线视频| 欧美日韩亚洲高清| 国产精品私拍pans大尺度在线| 国产手机视频精品| 亚洲free性xxxx护士hd| 国产精品1234| 亚洲欧美制服中文字幕| 91精品综合久久久久久五月天| 久久国产精品久久国产精品| 日韩欧美在线观看| 国产一区二区三区高清在线观看| 日韩欧美视频一区二区三区| 日韩亚洲精品电影| 国产有码在线一区二区视频| 91色视频在线观看| 日本一区二三区好的精华液| 久久久久久久久久婷婷| 欧美夫妻性生活视频| 欧美成人h版在线观看| 亚洲人成电影在线观看天堂色| 日韩高清免费在线| 国模gogo一区二区大胆私拍| 亚洲xxxx在线| 精品视频一区在线视频| 国产精品96久久久久久| 国产精品av在线播放| 国产欧美日韩精品丝袜高跟鞋| 欧美自拍视频在线观看| 亚洲片av在线| 午夜剧场成人观在线视频免费观看| 亚洲第一二三四五区| 国产精品 欧美在线| 97在线精品视频| 欧美一级片一区| 国产亚洲免费的视频看| 亚洲综合日韩中文字幕v在线| 国产欧美日韩最新| 久久久久久一区二区三区| 亚洲欧美制服另类日韩| 欧美日韩福利视频| 欧美日韩国产页| 日韩美女av在线免费观看| 亚洲欧美日韩精品久久奇米色影视| 亚洲电影在线看| 欧美成人一区在线| 亚洲国产另类久久精品| 国产色婷婷国产综合在线理论片a| 亚洲精品国精品久久99热| 国产精品久久久久久搜索| 欧美理论电影在线播放| 麻豆成人在线看| 欧美黄色片在线观看| 国产精品久久久久国产a级| 亚洲第一国产精品| 91精品国产乱码久久久久久蜜臀| 欧美高清在线视频观看不卡| 日韩欧美中文字幕在线播放| 国产精品爱啪在线线免费观看| 国产精品视频精品视频| 日本久久精品视频| 国产精品美乳在线观看| 国产欧美日韩免费看aⅴ视频| 国产精品视频不卡| 亚洲日本中文字幕免费在线不卡| 久久成人免费视频| 午夜精品99久久免费| 日韩久久免费视频| 国产精品露脸自拍| 国产精品第一页在线| 7777免费精品视频| 美女啪啪无遮挡免费久久网站| 欧美性猛交xxxx乱大交| 精品人伦一区二区三区蜜桃免费| 国产精品一区久久久| 日韩大陆毛片av| 国产日韩欧美中文| 日韩av在线直播| 91国在线精品国内播放| 欧美激情国内偷拍| 另类图片亚洲另类| 久久国产天堂福利天堂| 欧美高清视频免费观看| 亚洲国产私拍精品国模在线观看| 久久免费视频网| 久久久亚洲影院| 中文字幕欧美国内| 高清欧美一区二区三区| 亚洲高清免费观看高清完整版| 色妞一区二区三区| 欧美成人黑人xx视频免费观看| 日韩激情视频在线播放| 这里精品视频免费| 久久成人av网站| 97精品久久久中文字幕免费| 欧美性猛交xxxx乱大交蜜桃| 精品久久久久久久大神国产| 亚洲影院污污.| 国产一区二区av| 亚洲精品成a人在线观看| 日韩a**站在线观看| 欧美日韩一区二区三区在线免费观看| 久久久久久久久91| 亚洲国产精品va在看黑人| 福利一区福利二区微拍刺激| 中文在线资源观看视频网站免费不卡| 在线亚洲男人天堂| 黄色成人在线播放| 国产做受高潮69| 国产精品视频区1| 日韩久久午夜影院| 欧美极品美女视频网站在线观看免费| 欧美性受xxxx黑人猛交| 亚洲高清一区二| 日本久久久a级免费| 欧美性xxxxxx| 亚洲成人av片| 深夜福利一区二区| 日韩免费看的电影电视剧大全| www欧美日韩| 国产91色在线|| 成人免费视频a| 91av中文字幕| 欧美亚洲国产精品| 国产精品777| 91精品91久久久久久| 日本成熟性欧美|