проблема с просмотром списка Android - PullRequest
0 голосов
/ 31 января 2012

Эти ошибки появляются, когда пользователь входит в систему, а затем в следующем действии ListView должен прочитать все заголовки из базы данных и отобразить их:

LogCat:

01-30 12:52:57.405: E/AndroidRuntime(2905): FATAL EXCEPTION: main
01-30 12:52:57.405: E/AndroidRuntime(2905): java.lang.NullPointerException
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.AbsListView.obtainView(AbsListView.java:1294)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.ListView.onMeasure(ListView.java:1109)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.View.measure(View.java:8171)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.RelativeLayout.measureChild(RelativeLayout.java:563)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:378)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.View.measure(View.java:8171)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.View.measure(View.java:8171)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.View.measure(View.java:8171)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.View.measure(View.java:8171)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.os.Looper.loop(Looper.java:123)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at android.app.ActivityThread.main(ActivityThread.java:4627)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at java.lang.reflect.Method.invokeNative(Native Method)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at java.lang.reflect.Method.invoke(Method.java:521)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-30 12:52:57.405: E/AndroidRuntime(2905):     at dalvik.system.NativeStart.main(Native Method)

Если проблема где-то здесь:

package com.todo;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class Todo extends ListActivity implements OnClickListener{
    private Button add,delete,search,exit;
    private Intent intent;
    private ListView listView;
    DatabaseHelper db;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        db=new DatabaseHelper(this);
        db.open();
        setupViews();
        db.close();

    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.main_add_btn:
            //open activity to add item
            intent=new Intent(this, InsertItem.class);
            startActivity(intent);

            break;
        case R.id.main_delete_btn:
            //delete item
            break;
        case R.id.main_exit_btn:
            finish();
            break;

        }

    }
    private void setupViews(){
        add=(Button) findViewById(R.id.main_add_btn);
        delete=(Button) findViewById(R.id.main_delete_btn);
        search=(Button) findViewById(R.id.main_search_btn);
        exit=(Button) findViewById(R.id.main_exit_btn);
        add.setOnClickListener(this);
        delete.setOnClickListener(this);
        search.setOnClickListener(this);
        exit.setOnClickListener(this);
        listView=getListView();
//      int l=(int) intent.getLongExtra("userID", -1);      
        Log.v("test","tuja");
        ;
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,db.GetAllItems(1));
//      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
//              android.R.layout.simple_list_item_1, db.GetAllItems(1));
        Log.v("test","tuja2");
        setListAdapter(adapter);

    }
}

и функция GetAllItems:

public String[] GetAllItems(int userID) {
        Cursor cur = database.query(true, "todoItems",
                new String[] { "title" }, "userID" + "=" + userID, null, null,
                null, null, null);
        int i;
        String arr[] = new String[40];
        i = 0;

        cur.moveToFirst();
        while (cur.isAfterLast() == false) {
            arr[i] = cur.getString(cur.getColumnIndex("title"));
            Log.v("test", arr[i]);
            i++;
            cur.moveToNext();
        }
        return arr;
    }

Я пытался, но не могу найти, где я не прав.

1 Ответ

0 голосов
/ 31 января 2012

Удалите эту строку в вашем коде setContentView(R.layout.main);, затем запустите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...