首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新ListView:计时器中的ArrayAdapter

更新ListView:计时器中的ArrayAdapter
EN

Stack Overflow用户
提问于 2013-05-10 14:30:35
回答 2查看 1.3K关注 0票数 0

我是android的新手,但不是编程新手。有多年的嵌入式linux经验。我发现奇怪的是,要做非常简单的任务,比如在计时器上更新列表视图,我找不到任何文档,而且源代码在类的pelothra中交织在一起,以至于我发现花2-3天的时间在计时器中更新列表是非常奇怪的。这是多么困难,但我的坏运气,我不能找到一个样本……请帮帮忙。

我要做的很简单,我正在编写一个有计时器的活动,计时器从HTTP GET中读取状态值并将其显示在列表中。

首先,我创建了一个ListView,然后附加了一个包含0个元素的ArrayAdapter。在我的计时器中,我正在执行以下操作

代码语言:javascript
复制
//Timer run code
public void run() {
    strng = GetStatus()         
    adapter.add(strng);
    adapter.notifyDataSetChanged();
}

但它根本不起作用。

有没有人能帮我拿个样品...或者谷歌的一些人,请放一些相当基本的东西的样本。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-10 16:13:21

我设法让它运行起来,这里有一小段代码。请看一下,修改一下,玩一玩。我很快就会创建一个博客来放这些样本……

现在它已经工作到了非常基本的程度,如果我想修改它(A)更换适配器中特定位置的字符串有多难/多容易。现在我使用的是ArrayAdapter,它没有任何替换功能。为什么:(?(B)如果我必须创建一个服务,并让我的服务更新字符串values[]。做这个的方法是什么?我读到了意图,但由于服务和活动在同一个应用程序中,难道不能有全局数据吗?(C)还有一点关于java/android,你为什么写函数定义是一个新的调用。这是不是很难调试和不正确的编码方式?

代码语言:javascript
复制
public class ScreenOne extends Activity {
protected ListView mylist;
protected ArrayList<String> strlist;
protected ArrayAdapter<String> adapter;
protected TimerTask ttask;
protected int ctr =0;
protected Timer timer;

protected String[] values = new String[] { "XYAndroid", "iPhone", "WindowsMobile",
        "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
        "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux",
        "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
        "Android", "iPhone", "WindowsMobile" };
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen_one);

    mylist = (ListView) findViewById(R.id.s1ListView);
    strlist = new ArrayList<String>();

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strlist);

    mylist.setAdapter(adapter);


    Timer t = new Timer();
    //Set the schedule function and rate
    t.scheduleAtFixedRate(
            new TimerTask() 
            {

                @Override
                public void run()
                {
                    runOnUiThread(
                            new Runnable() {

                                @Override
                                public void run() {

                                    if(ctr  < values.length) {
                                        adapter.add(values[ctr]);
                                        ctr++;

                                    }
                                }
                            });

                }
            }
            ,
            0,
            500);
}
票数 1
EN

Stack Overflow用户

发布于 2013-05-10 15:45:11

下面是如何使用Android定时器的简单而基本的示例:

Timers in Android

您可以将正在运行的代码放在run()中,并使用myTimer.schedule()函数中的参数来设置时间值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16476444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档