0

我对 android 相当陌生,但对编程并不陌生。拥有多年的嵌入式 linux 经验。我觉得奇怪的是,要执行非常简单的任务,例如在计时器上更新列表视图,我找不到任何文档,而且源代码在类的 pelothra 中如此交错,我觉得花 2-3 天很奇怪谷歌搜索一个非常基本的东西来更新计时器中的列表。这有多难,但我的运气不好,我无法找到一个样品......请帮助。

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

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

//Timer run code
public void run() {
    strng = GetStatus()         
    adapter.add(strng);
    adapter.notifyDataSetChanged();
}

但它根本不起作用。

任何人都可以帮我提供一个样本....或者 GOOGLE 的某个人请放一些相当基本的东西的样本。

谢谢

4

2 回答 2

1

我设法让它运行,这是一个小代码。请看看修改玩它。我将很快创建一个博客来放置这些示例......

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

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);
}
于 2013-05-10T08:13:21.363 回答
0

以下是如何使用 Android Timer 的非常简单和基本的示例:

Android 中的计时器

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

于 2013-05-10T07:45:11.203 回答