Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 秒表列表视图动态更新-android_Java_Android - Fatal编程技术网

Java 秒表列表视图动态更新-android

Java 秒表列表视图动态更新-android,java,android,Java,Android,我目前有一个列表视图,其中每个项目表示当前经过的时间。我想做的是,每当用户单击“圈”按钮时,它都会将当前秒表时间添加到列表中。当我跑完并按圈时,什么都没发生。我是这样设置的: public class MainActivity extends Activity { ArrayList<String> list =new ArrayList<String>(); ArrayAdapter<String> adapter; ListView

我目前有一个列表视图,其中每个项目表示当前经过的时间。我想做的是,每当用户单击“圈”按钮时,它都会将当前秒表时间添加到列表中。当我跑完并按圈时,什么都没发生。我是这样设置的:

public class MainActivity extends Activity {
    ArrayList<String> list =new ArrayList<String>();
    ArrayAdapter<String> adapter;
    ListView myList = (ListView)findViewById(R.id.list);

    public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
           myList.setAdapter(adapter);
           final Chronometer myChronometer = (Chronometer)findViewById(R.id.chronometer);
           final ImageButton buttonLap = (ImageButton)findViewById(R.id.lap);

           buttonLap.setOnClickListener(new Button.OnClickListener(){
           @Override
           public void onClick(View v) {
               String s = "" + (SystemClock.elapsedRealtime() - myChronometer.getBase());
               list.add(s);
               adapter.notifyDataSetChanged();

           }});
     }
}
公共类MainActivity扩展活动{
ArrayList=新建ArrayList();
阵列适配器;
ListView myList=(ListView)findViewById(R.id.list);
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,list);
myList.setAdapter(适配器);
最终计时表myChronometer=(计时表)findViewById(R.id.计时表);
最终ImageButton buttonLap=(ImageButton)findViewById(R.id.lap);
buttonLap.setOnClickListener(新建Button.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串s=“”+(SystemClock.elapsedRealtime()-myChronometer.getBase());
列表。添加(s);
adapter.notifyDataSetChanged();
}});
}
}
这是logcat:

12-14 09:46:13.557: E/AndroidRuntime(954): FATAL EXCEPTION: main
12-14 09:46:13.557: E/AndroidRuntime(954): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.MainActivity}: java.lang.NullPointerException
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.os.Looper.loop(Looper.java:137)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.ActivityThread.main(ActivityThread.java:4745)
12-14 09:46:13.557: E/AndroidRuntime(954):  at java.lang.reflect.Method.invokeNative(Native Method)
12-14 09:46:13.557: E/AndroidRuntime(954):  at java.lang.reflect.Method.invoke(Method.java:511)
12-14 09:46:13.557: E/AndroidRuntime(954):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-14 09:46:13.557: E/AndroidRuntime(954):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-14 09:46:13.557: E/AndroidRuntime(954):  at dalvik.system.NativeStart.main(Native Method)
12-14 09:46:13.557: E/AndroidRuntime(954): Caused by: java.lang.NullPointerException
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.Activity.findViewById(Activity.java:1825)
12-14 09:46:13.557: E/AndroidRuntime(954):  at com.example.myfirstapp.MainActivity.<init>(MainActivity.java:22)
12-14 09:46:13.557: E/AndroidRuntime(954):  at java.lang.Class.newInstanceImpl(Native Method)
12-14 09:46:13.557: E/AndroidRuntime(954):  at java.lang.Class.newInstance(Class.java:1319)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
12-14 09:46:13.557: E/AndroidRuntime(954):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
12-14 09:46:13.557: E/AndroidRuntime(954):  ... 11 more
12-1409:46:13.557:E/AndroidRuntime(954):致命异常:main
12-14 09:46:13.557:E/AndroidRuntime(954):java.lang.RuntimeException:无法实例化活动组件信息{com.example.myfirstapp/com.example.myfirstapp.MainActivity}:java.lang.NullPointerException
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.ActivityThread.access$600(ActivityThread.java:130)
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-14 09:46:13.557:E/AndroidRuntime(954):在android.os.Handler.dispatchMessage(Handler.java:99)上
12-14 09:46:13.557:E/AndroidRuntime(954):在android.os.Looper.loop(Looper.java:137)
12-14 09:46:13.557:E/AndroidRuntime(954):位于android.app.ActivityThread.main(ActivityThread.java:4745)
12-14 09:46:13.557:E/AndroidRuntime(954):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-14 09:46:13.557:E/AndroidRuntime(954):位于java.lang.reflect.Method.invoke(Method.java:511)
12-14 09:46:13.557:E/AndroidRuntime(954):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-14 09:46:13.557:E/AndroidRuntime(954):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-14 09:46:13.557:E/AndroidRuntime(954):在dalvik.system.NativeStart.main(本机方法)
12-14 09:46:13.557:E/AndroidRuntime(954):由以下原因引起:java.lang.NullPointerException
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.Activity.findViewById(Activity.java:1825)
12-14 09:46:13.557:E/AndroidRuntime(954):位于com.example.myfirstapp.MainActivity。(MainActivity.java:22)
12-14 09:46:13.557:E/AndroidRuntime(954):位于java.lang.Class.newInstanceImpl(本机方法)
12-14 09:46:13.557:E/AndroidRuntime(954):位于java.lang.Class.newInstance(Class.java:1319)
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.Instrumentation.newActivity(Instrumentation.java:1053)上
12-14 09:46:13.557:E/AndroidRuntime(954):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
12-14 09:46:13.557:E/AndroidRuntime(954):。。。还有11个
这一行

ListView myList = (ListView)findViewById(R.id.list);
必须在之后来

setContentView(R.layout.activity_main);
内部
一旦创建
您的问题是:

   ListView myList = (ListView)findViewById(R.id.list);

您在设置内容视图之前调用它,因此您得到一个空值,然后尝试使用它。在使用
setContentView

之后,您需要将其移动到
onCreate
方法,以便澄清,您需要动态更新列表。它的作用是什么?整个
OnCreate
adapter
连接到的
ListView
在哪里?ListView myList=(ListView)findViewById(R.id.list);谢谢,这很有效!您知道如何格式化字符串,使其以时间而不是数字的形式出现吗?为什么ListView myList=(ListView)findViewById(R.id.list);在setContentView(R.layout.activity_main)之后出现@Bob,因为您正在尝试查找布局中包含的视图,但是如果您没有扩展布局,则没有什么可以搜索id。至于格式问题,您应该为此单独发布一个问题,因为它与这个问题完全无关。只是问我真的不需要知道,但它会对时间格式字符串有好处,你可以用:
string s=DateUtils.formattelapsedtime(SystemClock.elapsedRealtime()-myChronometer.getBase())替换
s