更新ui-gridview无法更新啊,求教~~~~

问题描述

gridview无法更新啊,求教~~~~

package jx.jvtc.bestfoddServer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import jx.jvtc.model.CustomerBuyFood;
import jx.jvtc.model.FoodAndroid;
import jx.jvtc.webserviceimpl.Orderbuyimpl;

import android.R.integer;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class SendMssion extends Activity {

private GridView gridListView;
private List<HashMap<String, Object>> data;
private String test = "多列显示Test";
List<CustomerBuyFood> lsInfo;
SimpleAdapter sa;

public void showFoodInfo(List<FoodAndroid> lsFoodMenu, final int id) {
    String[] str = new String[lsFoodMenu.size()];
    for (int i = 0; i < lsFoodMenu.size(); i++) {
        String value = lsFoodMenu.get(i).getMaterial();
        value += " × ";
        value += lsFoodMenu.get(i).getId() + "份";
        str[i] = value;
    }
    new AlertDialog.Builder(this).setTitle("需配送的菜").setItems(str, null)
            .setNegativeButton("正在派送", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Thread a = new Thread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            new Orderbuyimpl().updateorder(id, 0);
                            lsInfo = new Orderbuyimpl()
                                    .getordertime(LoginState.cellPhone);
                            data = new ArrayList<HashMap<String, Object>>();
                            for (int i = 0; i < lsInfo.size(); i++) {
                                HashMap<String, Object> map = new HashMap<String, Object>();
                                map.put("sendStateStr", lsInfo.get(i)
                                        .getOflag());
                                System.out
                                        .println(lsInfo.get(i).getOflag());
                                data.add(map);
                            }
                        }
                    });

                    a.start();
                    try {
                        a.join();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    gridListView = (GridView) findViewById(R.id.list_gridView);
                    sa = (SimpleAdapter) gridListView.getAdapter();
                    sa.notifyDataSetChanged();
                    // gridListView.setAdapter(sa);

                }
            })

            .setPositiveButton("已送达", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    new Thread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            new Orderbuyimpl().updateorder(id, 1);
                            SendMssion.this.onResume();

                        }
                    }).start();
                }
            }).show();
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Thread a = new Thread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            lsInfo = new Orderbuyimpl().getordertime(LoginState.cellPhone);
        }
    });
    a.start();
    try {
        a.join();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if (lsInfo.size() == 0) {
        setContentView(R.layout.activity_send_mission_null);
    } else {
        setContentView(R.layout.activity_send_mssion);
        gridListView = (GridView) findViewById(R.id.list_gridView);
        fillData();
        sa = new SimpleAdapter(this, data,
                R.layout.activity_send_mission_item, new String[] {
                        "phone", "address", "homeSendTime", "sendStateStr",
                        "foodMenu", "id" }, new int[] { R.id.phone,
                        R.id.sendAddr, R.id.sendTime, R.id.sendState });
        gridListView.setAdapter(sa);
        gridListView
                .setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        // TODO Auto-generated method stub
                        HashMap<String, Object> item = (HashMap<String, Object>) arg0
                                .getItemAtPosition(arg2);
                        // setTitle((String) item.get("goods_text"));
                        // String str = item.get("phone");
                        // Toast.makeText(SendMssion.this, "",
                        // Toast.LENGTH_SHORT).show();
                        List<FoodAndroid> lsFoodMenu;
                        lsFoodMenu = (List<FoodAndroid>) item
                                .get("foodMenu");
                        // System.out.println(lsFoodMenu.size()+"  ss");
                        int id = (Integer) item.get("id");
                        // System.out.println(id + "tsendState");
                        showFoodInfo(lsFoodMenu, id);
                    }
                });
    }
}

public void fillData() {
    data = new ArrayList<HashMap<String, Object>>();
    for (int i = 0; i < lsInfo.size(); i++) {
        HashMap<String, Object> map = new HashMap<String, Object>();
        int id = lsInfo.get(i).getId();
        map.put("phone", lsInfo.get(i).getPhone());
        map.put("address", lsInfo.get(i).getAddress());
        map.put("homeSendTime", lsInfo.get(i).getStrdate());
        map.put("sendStateStr", lsInfo.get(i).getOflag());
        map.put("id", id);
        map.put("foodMenu", lsInfo.get(i).getFoodmenu());
        // System.out.println(String.valueOf(lsInfo.get(i).getId())
        // + " tDDDDDD");
        data.add(map);
    }
}

}

时间: 2024-11-03 01:48:17

更新ui-gridview无法更新啊,求教~~~~的相关文章

android中子线程更新UI的方式

一.为何写作此文 你是不是经常看到很多书籍中说:不能在子线程中操作ui,不然会报错.你是不是也遇到了如下的疑惑(见下面的代码): (Bundle savedInstanceState) { .onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); Thread.currentThread().setName(); LooperThrea

android更新UI的几种方法

作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了, 因为现实是残酷的,就算一开始的时间和精力非常充足,也会随着项目的推进而逐步消磨殆尽.我们会发现, 自己越来越消极怠工,只是在无意义的敲代码,敲的还是网上抄来的代码,如果不行,继续找. 这就 是项目进度没有规划好而导致的. 最近在做有关蓝牙的项目,一开始的进度都安排得很顺利,但是因 为测试需要两部手机,而且还要是android手机,暑假已经开始了,同学们都回家了,加上我手机的蓝牙坏了 ,导致我的进度严重

Android异步更新UI的四种方式_Android

大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView.1.使用Handler消息传递机制 package com.example.runonuithreadtest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView;

asynctask-Asynctask更新UI的问题?

问题描述 Asynctask更新UI的问题? 子线程不能更新UI,但是Asynctask能更新UI,是为什么? 解决方案 你可以看下AsyncTask的源码,AsyncTask必须在UI线程中使用,AsyncTask里面有一段new Handler的过程,然后里面的线程池调用玩doInBackground后会用这个handler下去发送消息在ui线程中调用onPostExecute 解决方案二: 安卓要求更新ui在子线程,由于Asynctask开辟子线程,所以可以 解决方案三: 他更新UI也是在

Android更新UI的四种方法详解_Android

前言 相信每位Android开发者们都知道更新UI只能在主线程中进行,若是在子线程执行任务后需要更新UI,则需要借助handler跳转到主线程中.以下介绍几种操作UI的方法. 一.使用Handler的handleMessage() Handler的构造 public Handler() { this(null, false); } public Handler(Callback callback, boolean async) { if (FIND_POTENTIAL_LEAKS) { fina

Android 更新UI的方法汇总_Android

1.Activity的 runOnUiThread textView = (TextView) findViewById( R.id.tv ); new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { textView.setText( "更新UI了"); } }); } }).start(); andro

Android通过RemoteViews实现跨进程更新UI示例

一.概述 前面一篇文章Android通过AIDL实现跨进程更新UI我们学习了aidl跨进程更新ui,这种传统方式实现跨进程更新UI是可行的,但有以下弊端: View中的方法数比较多,在IPC中需要增加对应的方法比较繁琐. View的每一个方法都会涉及到IPC操作,多次IPC带来的开销问题不容小觑. View中方法的某些参数可能不支持IPC传输.例如:OnClickListener,它仅仅是个接口没有序列化. 接下来我们通过RemoteViews实现跨进程更新UI 二.实现效果图 在同一个应用中有

c#异步读取数据库与异步更新ui的代码实现

 这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧 异步读取数据库,在数据绑定的时候会出现点问题,就是窗体界面会无法关闭,要结束任务才能结束进程.例如下面代码   首先按习惯的方法,设定线程更新UI   a2.CheckForIllegalCrossThreadCalls = false;  //a2为窗体名称   下面的代码就是从数据库里取得数据并绑定     代码如下: private void button1_Click(object sender, Event

android 下载 跨界面更新UI

问题描述 android 下载 跨界面更新UI 项目遇到问题,在一个activity中点击下载一堆文件,然后需要在另一个activity中的fragment中的listview中更新正在下载的item的进度. 我是使用广播加异步更新.但总觉得效率有点慢.有更好的方法吗?

Android 在其他线程中更新UI线程的解决方法_Android

方法一:Activity.runOnUiThread(Runnable )(经验之道: 这个最好用, 凡是要刷新页面的地方,Activity.runOnUiThread( new Runnable()  { public void run(){更新UI}}); 方法二:子线程调用Handler的sendMessage(message)发送事件. 复制代码 代码如下: mHandler = new Handler() {     @Override     public void handleMe