在计时器中更新ListView:ArrayAdapter

时间:2013-05-10 06:30:35

标签: android android-layout android-listview

我对Android很新,但不是编程。拥有良好多年的嵌入式Linux经验。 我发现奇怪的是,要做一个非常简单的任务,比如在计时器上更新列表视图,我无法找到任何文档,并且源代码是如此交错的类,我觉得花2-3天很奇怪谷歌搜索更新计时器列表非常基本的东西。它有多难,但运气不好我无法找到一个样品.....请帮忙。

我尝试做的非常简单,我正在编写一个具有计时器的Activity,计时器从HTTP GET读取状态值并将其显示在列表中。

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

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

但它根本不起作用。

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

谢谢

2 个答案:

答案 0 :(得分:1)

我设法让它运行,这里是一个小代码。 请看看修改游戏。我很快就会创建一个博客来提供这些样本......

现在它的工作非常基础,如果我想修改它 (A)在适配器的特定位置更换弦线有多难/容易。现在我正在使用没有任何替换功能的ArrayAdapter。为什么:(? (B)如果我必须创建服务并让我的服务更新字符串值[]。这是怎么做的?我读到了意图,但由于服务和活动在同一个应用程序中,不能有全局数据? (三)关于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);
}

答案 1 :(得分:0)

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

Timers in Android

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