0

我有一个使用 listview 元素的活动,如下所示

public class List1 extends Activity
{

Context context=this;

@Override
        public void onCreate(Bundle savedInstanceState)
        {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);

        try{
                        //DB

           final SQLiteDatabase db;
            db = openOrCreateDatabase(
                "Secret.db"
                , SQLiteDatabase.CREATE_IF_NECESSARY
                , null
                );
            db.setVersion(1);
            db.setLocale(Locale.getDefault());
            db.setLockingEnabled(true);



            Cursor cur = db.query("tbl_user",null,null,null,null,null,null);



            //DB Over


         ListView listView = (ListView) findViewById(R.id.mylist);
         listView.setTextFilterEnabled(true);



         final String[] values = new String[50];
         int i=0;
         while(cur.moveToNext())
         {

                    values[i]=Integer.toString(cur.getInt(0))+":"+cur.getString(1)+":"+cur.getString(2);     
          i++;
         }

        cur.close();

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,R.layout.list_item,values);


            listView.setAdapter(adapter);
            listView.setVisibility(0);



               listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

              public void onItemClick(AdapterView<?> parent, View view, int position,long id)
                //public void onItemClick(ListView<?> listview, View view, int position,long id)
                {



                  try
                  {
                     Intent i=new Intent(List1.this,Form1.class);
                     i.putExtra("uid","85");
                     startActivity(i);
                     finish();
                  }
                  catch(Exception e)
                  {
                      String insert2="insert into login values("+"\""+e.toString()+"\""+");";
                        db.execSQL(insert2);

                  }


                }
            });

               db.close();
            //required
            }
       catch(Exception e)
       {
        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();}
       }
}

这是我的 listview.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
     <ListView
        android:id="@+id/mylist"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView> 

  </RelativeLayout>

这是我的 list_item.xml 文件,其中包含所需的 textview

  <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:id="@+id/tv1"
        android:padding="10dp"
        android:background="@drawable/textview1"
        style="@style/textview_text"
        android:textSize="16dp">


</TextView>

但是 ListView 不起作用。我的意思是在参加此活动后,应用程序显示错误,显示“APP_NAME 意外停止”。相同的代码工作一两次,然后连续显示上述错误。我可以知道为什么会这样吗?
编辑
这是 logcat 文件

W/dalvikvm( 2694): threadid=3: thread exiting with uncaught exception (group=0x4
001b188)
E/AndroidRuntime( 2694): Uncaught handler: thread main exiting due to uncaught e
xception
E/AndroidRuntime( 2694): java.lang.NullPointerException
E/AndroidRuntime( 2694):        at android.widget.ArrayAdapter.createViewFromRes
ource(ArrayAdapter.java:355)
E/AndroidRuntime( 2694):        at android.widget.ArrayAdapter.getView(ArrayAdap
ter.java:323)
E/AndroidRuntime( 2694):        at android.widget.AbsListView.obtainView(AbsList
View.java:1274)
E/AndroidRuntime( 2694):        at android.widget.ListView.makeAndAddView(ListVi
ew.java:1668)
E/AndroidRuntime( 2694):        at android.widget.ListView.fillDown(ListView.jav
a:637)
E/AndroidRuntime( 2694):        at android.widget.ListView.fillFromTop(ListView.
java:694)
E/AndroidRuntime( 2694):        at android.widget.ListView.layoutChildren(ListVi
ew.java:1521)
E/AndroidRuntime( 2694):        at android.widget.AbsListView.onLayout(AbsListVi
ew.java:1113)
E/AndroidRuntime( 2694):        at android.view.View.layout(View.java:6830)
E/AndroidRuntime( 2694):        at android.widget.RelativeLayout.onLayout(Relati
veLayout.java:900)
E/AndroidRuntime( 2694):        at android.view.View.layout(View.java:6830)
E/AndroidRuntime( 2694):        at android.widget.FrameLayout.onLayout(FrameLayo
ut.java:333)
E/AndroidRuntime( 2694):        at android.view.View.layout(View.java:6830)
E/AndroidRuntime( 2694):        at android.widget.LinearLayout.setChildFrame(Lin
earLayout.java:1119)
E/AndroidRuntime( 2694):        at android.widget.LinearLayout.layoutVertical(Li
nearLayout.java:998)
E/AndroidRuntime( 2694):        at android.widget.LinearLayout.onLayout(LinearLa
yout.java:918)
E/AndroidRuntime( 2694):        at android.view.View.layout(View.java:6830)
E/AndroidRuntime( 2694):        at android.widget.FrameLayout.onLayout(FrameLayo
ut.java:333)
E/AndroidRuntime( 2694):        at android.view.View.layout(View.java:6830)
E/AndroidRuntime( 2694):        at android.view.ViewRoot.performTraversals(ViewR
oot.java:996)
E/AndroidRuntime( 2694):        at android.view.ViewRoot.handleMessage(ViewRoot.
java:1633)
E/AndroidRuntime( 2694):        at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime( 2694):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 2694):        at android.app.ActivityThread.main(ActivityThrea
d.java:4363)
E/AndroidRuntime( 2694):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime( 2694):        at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime( 2694):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime( 2694):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:618)
E/AndroidRuntime( 2694):        at dalvik.system.NativeStart.main(Native Method)

D/dalvikvm( 2694): GC freed 6621 objects / 343272 bytes in 126ms
I/dalvikvm( 2694): Uncaught exception thrown by finalizer (will be discarded):
I/dalvikvm( 2694): Ljava/lang/IllegalStateException;: Finalizing cursor android.
database.sqlite.SQLiteCursor@44c60cd0 on login that has not been deactivated or
closed
I/dalvikvm( 2694):      at android.database.sqlite.SQLiteCursor.finalize(SQLiteC
ursor.java:596)
I/dalvikvm( 2694):      at dalvik.system.NativeStart.run(Native Method)
I/dalvikvm( 2694): Uncaught exception thrown by finalizer (will be discarded):
I/dalvikvm( 2694): Ljava/lang/IllegalStateException;: Finalizing cursor android.
database.sqlite.SQLiteCursor@44c58028 on login that has not been deactivated or
closed
I/dalvikvm( 2694):      at android.database.sqlite.SQLiteCursor.finalize(SQLiteC
ursor.java:596)
I/dalvikvm( 2694):      at dalvik.system.NativeStart.run(Native Method)
I/dalvikvm( 2694): Uncaught exception thrown by finalizer (will be discarded):
I/dalvikvm( 2694): Ljava/lang/IllegalStateException;: Finalizing cursor android.
database.sqlite.SQLiteCursor@44c37fa0 on login that has not been deactivated or
closed
I/dalvikvm( 2694):      at android.database.sqlite.SQLiteCursor.finalize(SQLiteC
ursor.java:596)
I/dalvikvm( 2694):      at dalvik.system.NativeStart.run(Native Method)
I/Process (   52): Sending signal. PID: 2694 SIG: 3
I/dalvikvm( 2694): threadid=7: reacting to signal 3
I/dalvikvm( 2694): Wrote stack trace to '/data/anr/traces.txt'
I/Process ( 2694): Sending signal. PID: 2694 SIG: 9
I/ActivityManager(   52): Process com.notification (pid 2694) has died.
I/WindowManager(   52): WIN DEATH: Window{44d90538 com.notification/com.notifica
tion.List1 paused=false}
I/UsageStats(   52): Unexpected resume of com.android.launcher while already res
umed in com.notification
W/InputManagerService(   52): Window already focused, ignoring focus gain of: co
m.android.internal.view.IInputMethodClient$Stub$Proxy@44d933c8
I/ActivityManager(   52): Start proc com.notification for broadcast com.notifica
tion/.AlarmReceiver: pid=2706 uid=10034 gids={3003}
D/ddm-heap( 2706): Got feature list request
D/dalvikvm( 1152): GC freed 194 objects / 8728 bytes in 88ms
I/ActivityManager(   52): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.notification/
.NotificationActivity }
I/ActivityManager(   52): Starting activity: Intent { cmp=com.notification/.Back
ground }
I/ActivityManager(   52): Displayed activity com.notification/.Background: 262 m
s (total 8081 ms)
D/dalvikvm(  234): GC freed 44 objects / 2064 bytes in 134ms
D/AndroidRuntime( 2718):
D/AndroidRuntime( 2718): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 2718): CheckJNI is ON
D/AndroidRuntime( 2718): --- registering native functions ---
D/ddm-heap( 2718): Got feature list request
D/PackageParser(   52): Scanning package: /data/app/vmdl67950.tmp
I/PackageManager(   52): Removing non-system package:com.notification
D/PackageManager(   52): Removing package com.notification
D/PackageManager(   52):   Services: com.notification.BackService
D/PackageManager(   52):   Receivers: com.notification.AlarmReceiver
D/PackageManager(   52):   Activities: com.notification.NotificationActivity com
.notification.Form1 com.notification.Background com.notification.Bg com.notifica
tion.List1
W/InputManagerService(   52): Window already focused, ignoring focus gain of: co
m.android.internal.view.IInputMethodClient$Stub$Proxy@44eb1868
D/PackageManager(   52): Scanning package com.notification
I/PackageManager(   52): /data/app/vmdl67950.tmp changed; unpacking
D/installd(   32): DexInv: --- BEGIN '/data/app/vmdl67950.tmp' ---
D/dalvikvm( 2724): DexOpt: load 40ms, verify 159ms, opt 2ms
D/installd(   32): DexInv: --- END '/data/app/vmdl67950.tmp' (success) ---
D/PackageManager(   52):   Services: com.notification.BackService
D/PackageManager(   52):   Receivers: com.notification.AlarmReceiver
D/PackageManager(   52):   Activities: com.notification.NotificationActivity com
.notification.Form1 com.notification.Background com.notification.Bg com.notifica
tion.List1
D/ActivityManager(   52): Uninstalling process com.notification
D/ActivityManager(   52): Force removing process ProcessRecord{44e9eb48 2706:com
.notification/10034} (com.notification/10034)
I/Process (   52): Sending signal. PID: 2706 SIG: 9
D/ActivityManager(   52): Received spurious death notification for thread androi
d.os.BinderProxy@44eec8b8
I/installd(   32): move /data/dalvik-cache/data@app@vmdl67950.tmp@classes.dex ->
 /data/dalvik-cache/data@app@com.notification.apk@classes.dex
D/PackageManager(   52): New package installed in /data/app/com.notification.apk

D/AndroidRuntime( 2718): Shutting down VM
D/dalvikvm( 2718): DestroyJavaVM waiting for non-daemon threads to exit
D/dalvikvm( 2718): DestroyJavaVM shutting VM down
D/dalvikvm( 2718): HeapWorker thread shutting down
D/dalvikvm( 2718): HeapWorker thread has shut down
D/jdwp    ( 2718): JDWP shutting down net...
I/dalvikvm( 2718): Debugger has detached; object registry had 1 entries
D/dalvikvm( 2718): VM cleaning up
D/dalvikvm( 2718): LinearAlloc 0x0 used 623916 of 5242880 (11%)
D/ActivityManager(   52): Uninstalling process com.notification
I/dalvikvm( 2718): JNI: AttachCurrentThread (from ???.???)
E/AndroidRuntime( 2718): ERROR: thread attach failed
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
700e5
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
20031
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
20030
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
50000
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
60000
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
60001
D/dalvikvm( 1152): GC freed 139 objects / 5928 bytes in 230ms
D/dalvikvm(   52): GC freed 14606 objects / 863536 bytes in 259ms
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
700e5
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
20031
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
20030
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
50000
D/dalvikvm(   52): GC freed 425 objects / 17320 bytes in 275ms
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
60000
W/ResourceType(   52): Resources don't contain package for resource number 0x7f0
60001
D/AndroidRuntime( 2729):
D/AndroidRuntime( 2729): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 2729): CheckJNI is ON
D/AndroidRuntime( 2729): --- registering native functions ---
D/ddm-heap( 2729): Got feature list request
I/ActivityManager(   52): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.notification/
.NotificationActivity }
I/ActivityManager(   52): Start proc com.notification for activity com.notificat
ion/.NotificationActivity: pid=2735 uid=10034 gids={3003}
D/AndroidRuntime( 2729): Shutting down VM
D/dalvikvm( 2729): DestroyJavaVM waiting for non-daemon threads to exit
D/dalvikvm( 2729): DestroyJavaVM shutting VM down
D/dalvikvm( 2729): HeapWorker thread shutting down
D/dalvikvm( 2729): HeapWorker thread has shut down
D/jdwp    ( 2729): JDWP shutting down net...
I/dalvikvm( 2729): Debugger has detached; object registry had 1 entries
D/dalvikvm( 2729): VM cleaning up
E/AndroidRuntime( 2729): ERROR: thread attach failed
D/dalvikvm( 2729): LinearAlloc 0x0 used 639500 of 5242880 (12%)
D/dalvikvm(   30): GC freed 299 objects / 11576 bytes in 264ms
D/ddm-heap( 2735): Got feature list request
D/dalvikvm(   30): GC freed 57 objects / 2432 bytes in 160ms
D/dalvikvm(   30): GC freed 2 objects / 48 bytes in 360ms
I/ActivityManager(   52): Displayed activity com.notification/.NotificationActiv
ity: 1204 ms (total 1204 ms)
W/KeyCharacterMap( 2735): No keyboard for id 0
W/KeyCharacterMap( 2735): Using default keymap: /system/usr/keychars/qwerty.kcm.
bin
I/ActivityManager(   52): Starting activity: Intent { cmp=com.notification/.Bg (
has extras) }
I/ActivityManager(   52): Displayed activity com.notification/.Bg: 329 ms (total
 329 ms)
D/dalvikvm( 1152): GC freed 2454 objects / 141000 bytes in 600ms
I/ActivityManager(   52): Starting activity: Intent { cmp=com.notification/.List
1 bnds=[0,152][480,248] }
W/ActivityManager(   52): startActivity called from non-Activity context; forcin
g Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=com.notification/.List1 bnds=[
0,152][480,248] }
D/AndroidRuntime( 2735): Shutting down VM
W/dalvikvm( 2735): threadid=3: thread exiting with uncaught exception (group=0x4
001b188)
E/AndroidRuntime( 2735): Uncaught handler: thread main exiting due to uncaught e
xception
E/AndroidRuntime( 2735): java.lang.NullPointerException
E/AndroidRuntime( 2735):        at android.widget.ArrayAdapter.createViewFromRes
ource(ArrayAdapter.java:355)
E/AndroidRuntime( 2735):        at android.widget.ArrayAdapter.getView(ArrayAdap
ter.java:323)
E/AndroidRuntime( 2735):        at android.widget.AbsListView.obtainView(AbsList
View.java:1256)
E/AndroidRuntime( 2735):        at android.widget.ListView.measureHeightOfChildr
en(ListView.java:1147)
E/AndroidRuntime( 2735):        at android.widget.ListView.onMeasure(ListView.ja
va:1060)
E/AndroidRuntime( 2735):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime( 2735):        at android.widget.RelativeLayout.measureChild(Re
lativeLayout.java:554)
E/AndroidRuntime( 2735):        at android.widget.RelativeLayout.onMeasure(Relat
iveLayout.java:377)
E/AndroidRuntime( 2735):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime( 2735):        at android.view.ViewGroup.measureChildWithMargin
s(ViewGroup.java:3023)
E/AndroidRuntime( 2735):        at android.widget.FrameLayout.onMeasure(FrameLay
out.java:245)
E/AndroidRuntime( 2735):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime( 2735):        at android.widget.LinearLayout.measureVertical(L
inearLayout.java:464)
E/AndroidRuntime( 2735):        at android.widget.LinearLayout.onMeasure(LinearL
ayout.java:278)
E/AndroidRuntime( 2735):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime( 2735):        at android.view.ViewGroup.measureChildWithMargin
s(ViewGroup.java:3023)
E/AndroidRuntime( 2735):        at android.widget.FrameLayout.onMeasure(FrameLay
out.java:245)
E/AndroidRuntime( 2735):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime( 2735):        at android.view.ViewRoot.performTraversals(ViewR
oot.java:763)
E/AndroidRuntime( 2735):        at android.view.ViewRoot.handleMessage(ViewRoot.
java:1633)
E/AndroidRuntime( 2735):        at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime( 2735):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 2735):        at android.app.ActivityThread.main(ActivityThrea
d.java:4363)
E/AndroidRuntime( 2735):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime( 2735):        at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime( 2735):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime( 2735):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:618)
E/AndroidRuntime( 2735):        at dalvik.system.NativeStart.main(Native Method)

I/Process (   52): Sending signal. PID: 2735 SIG: 3
I/dalvikvm( 2735): threadid=7: reacting to signal 3
I/dalvikvm( 2735): Wrote stack trace to '/data/anr/traces.txt'
W/ActivityManager(   52): Launch timeout has expired, giving up wake lock!
W/ActivityManager(   52): Activity idle timeout for HistoryRecord{44dcace0 com.n
otification/.List1}
I/Process ( 2735): Sending signal. PID: 2735 SIG: 9
I/ActivityManager(   52): Process com.notification (pid 2735) has died.
I/WindowManager(   52): WIN DEATH: Window{44d8db78 com.notification/com.notifica
tion.List1 paused=false}
I/UsageStats(   52): Unexpected resume of com.android.launcher while already res
umed in com.notification
I/ActivityManager(   52): Start proc com.notification for broadcast com.notifica
tion/.AlarmReceiver: pid=2745 uid=10034 gids={3003}
W/InputManagerService(   52): Window already focused, ignoring focus gain of: co
m.android.internal.view.IInputMethodClient$Stub$Proxy@44f2e3d8
E/gralloc (   52): [unregister] handle 0x423290 still locked (state=40000001)
D/ddm-heap( 2745): Got feature list request
D/dalvikvm( 1152): GC freed 212 objects / 9560 bytes in 82ms
I/ActivityManager(   52): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.notification/
.NotificationActivity }
I/ActivityManager(   52): Starting activity: Intent { cmp=com.notification/.Back
ground }
I/ActivityManager(   52): Displayed activity com.notification/.Background: 240 m
s (total 16387 ms)
D/dalvikvm(  234): GC freed 43 objects / 2024 bytes in 152ms
4

3 回答 3

2

我认为您的适配器应该知道它应该使用哪个 textViewResourceId。所以试试这个:ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,R.layout.list_item, R.id.tv1,values);

于 2012-05-07T07:39:02.883 回答
1

将此更改为

<ListView
    android:id="@+id/mylist"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

这个

<ListView
    android:id="@+id/mylist"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

你为什么需要listView.setVisibility(0)

于 2012-05-07T07:25:25.073 回答
1
     final String[] values = new String[50];
     int i=0;
     while(cur.moveToNext())
     {

                values[i]=Integer.toString(cur.getInt(0))+":"+cur.getString(1)+":"+cur.getString(2);     
      i++;
     }

    cur.close();

从这段代码开始。

db.query返回时,您应该在开始在while循环中使用它之前回退光标。如果查询返回超过 50 个结果怎么办?您的应用程序将崩溃ArrayOutBoundException

于 2012-05-07T07:26:42.173 回答