Android 输出列表视图中不显示项目

Android 输出列表视图中不显示项目,android,sqlite,listview,Android,Sqlite,Listview,我正在做一个可以在listView中显示所有数据的应用程序。但当我编译我的应用程序时,listView中没有显示任何内容。程序中没有任何错误,我真的不知道哪个部分是错的 有人知道我的程序有什么问题吗 main.java package com.example.shoppingassistantnew; import java.util.ArrayList; import greendroid.app.GDActivity; import greendroid.app.GDListAct

我正在做一个可以在listView中显示所有数据的应用程序。但当我编译我的应用程序时,listView中没有显示任何内容。程序中没有任何错误,我真的不知道哪个部分是错的

有人知道我的程序有什么问题吗

main.java

package com.example.shoppingassistantnew;

import java.util.ArrayList;



import greendroid.app.GDActivity;
import greendroid.app.GDListActivity;
import greendroid.widget.ActionBar;
import greendroid.widget.ActionBarItem;
import greendroid.widget.ActionBarItem.Type;
import greendroid.widget.QuickAction;
import greendroid.widget.QuickActionBar;
import greendroid.widget.QuickActionGrid;
import greendroid.widget.QuickActionWidget;
import greendroid.widget.QuickActionWidget.OnQuickActionClickListener;

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.LightingColorFilter;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;

public class main extends GDActivity{

    private static final int HOME = 2;

    private static final int ADD = 1;

    private static final int EXPAND = 3;



    Cursor model = null;
    ProductDatabaseHelper helper = null;
    ShoppingListAdapter adapter=null;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setActionBarContentView(R.layout.shoppinglist);


        initActionBar();

        helper = new ProductDatabaseHelper(this);
        ListView listView = (ListView) findViewById(R.id.shoppingList);

        model = helper.getAll();
        startManagingCursor(model);
        adapter = new ShoppingListAdapter(model);
        listView.setAdapter(adapter);


    }
    public void onDestroy(){
        super.onDestroy();
        helper.close();
    }





    private OnQuickActionClickListener mActionListener = new OnQuickActionClickListener() {
        public void onQuickActionClicked(QuickActionWidget widget, int position) {
            if (position == 0) {
                Intent intent2 = new Intent(main.this, AddShoppingList.class);
                startActivity(intent2);
            }
        }
    };



    private void initActionBar() {
        // TODO Auto-generated method stub
        // this.getActionBar().setType(ActionBar.Type.Empty);
        addActionBarItem(Type.Add, ADD);
        addActionBarItem(Type.Edit, EXPAND);
    }

    @Override
    public boolean onHandleActionBarItemClick(ActionBarItem item, int position) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case ADD:
            Intent intent = new Intent(main.this, AddShoppingList.class);
            startActivity(intent);
            break;
        case HOME:
            Intent intent1 = new Intent(main.this, main.class);
            startActivity(intent1);
            break;
        case EXPAND:
            onShowGrid(item.getItemView());
            break;

        }
        return super.onHandleActionBarItemClick(item, position);
    }

    class ShoppingListAdapter extends CursorAdapter{

        public ShoppingListAdapter(Cursor c) {
            super(main.this, c);
            // TODO Auto-generated constructor stub
        }

        @Override
        public void bindView(View row, Context ctxt, Cursor c) {
            // TODO Auto-generated method stub
            ShoppingListHolder holder=(ShoppingListHolder)row.getTag();
        }


        @Override
        public View newView(Context ctxt, Cursor cursor, ViewGroup parent) {
            // TODO Auto-generated method stub
            LayoutInflater inflater=getLayoutInflater();
            View row=inflater.inflate(R.layout.row,parent,false);
            ShoppingListHolder holder=new ShoppingListHolder(row);
            row.setTag(holder);
            return(row);

        }
    }
        static class ShoppingListHolder{
            private TextView barcode=null;
            private TextView format=null;

            ShoppingListHolder(View row){
                barcode=(TextView)row.findViewById(R.id.barcode);
                format=(TextView)row.findViewById(R.id.format);

            }
            void populateFrom(Cursor c,ProductDatabaseHelper helper){
                barcode.setText(helper.getBarcode(c));
                format.setText(helper.getFormat(c));


            }

        }




    }
addShoppingList.java

package com.example.shoppingassistantnew;

import com.cyrilmottier.android.greendroid.R;

//import com.example.shoppingassistantnew.main.ProductData;


import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import greendroid.app.GDActivity;

public class AddShoppingList extends Activity implements OnClickListener{
    //private static final ProductData mProductData = new ProductData();
    ProductData mProductData=new ProductData();
    Button mSaveBttn;
    EditText mBarcodeEdit;
    EditText mFormatEdit;
     ProductDatabaseHelper helper=null;

    //Cursor model=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addshoppinglist);

        mSaveBttn = (Button) findViewById(R.id.saveBttn);
        mSaveBttn.setOnClickListener(this);
         dt=(DatePicker)findViewById(R.id.datePicker1);
        helper=new ProductDatabaseHelper(this);

    }


    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.saveBttn:

            mBarcodeEdit = (EditText) findViewById(R.id.shoppingListNameEdit);
            mFormatEdit = (EditText) findViewById(R.id.shoppingDateEdit);
           mProductData.setBarcode(mBarcodeEdit.getText().toString());
           mProductData.setFormat(mFormatEdit.getText().toString());
           helper.insert(mBarcodeEdit.getText().toString(),mFormatEdit.getText().toString());
           showInfoDialog(this, "Success", "Product saved successfully");
           //model.requery();
        break;
        }
    }
       private void showInfoDialog(Context context, String title, String information) {
            new AlertDialog.Builder (context)
            .setMessage(information)
            .setTitle(title)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {


                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();

                }
            }).show();  
        }

}

ProductDatabase.java



  package com.example.shoppingassistantnew;

    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;

     class ProductDatabaseHelper extends SQLiteOpenHelper {
        private static final String PRODUCT_TABLE = "products";
        private static final String DATABASE_NAME = "spot_pay.db";
        private static final int SCHEMA_VERSION = 1;
        private SQLiteDatabase db;

        private static final String TAG = null;

        public ProductDatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null,SCHEMA_VERSION);
            // TODO Auto-generated constructor stub
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL("CREATE TABLE products (_id INTEGER PRIMARY KEY AUTOINCREMENT,barcode TEXT ,format TEXT);");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            db.execSQL("drop table if exists " + PRODUCT_TABLE);
            onCreate(db);
        }

        /*
         * public ProductDatabase(Context context) { ProductDatabaseHelper helper =
         * new ProductDatabaseHelper(context); db = helper.getWritableDatabase();
         * 
         * }
         */
        public Cursor getAll() {
            // TODO Auto-generated method stub
            return (getReadableDatabase()
                    .rawQuery("SELECT _id, barcode, format FROM products ORDER BY barcode",
                    null));
        }

        public void insert(String barcode, String format) {
            ContentValues vals = new ContentValues();
            vals.put("barcode", barcode);
            vals.put("format", format);
        getWritableDatabase().insert("products", null, vals);


        }





        public String getBarcode(Cursor c) {
            // TODO Auto-generated method stub
            return(c.getString(1));
        }

        public String getFormat(Cursor c) {
            // TODO Auto-generated method stub
            return(c.getString(2));
            }
        }

     row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:orientation="horizontal" 
    android:padding="4dip">
     <LinearLayout
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical" >
         <TextView 
             android:id="@+id/barcode"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:gravity="center_vertical"
             android:textStyle="bold"
             android:singleLine="true"
             android:ellipsize="end"

             />
         <TextView
             android:id="@+id/format"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_weight="1"
               android:gravity="center_vertical"
             android:textStyle="bold"
             android:singleLine="true"
             android:ellipsize="end"/>
         </LinearLayout>

</LinearLayout>
package com.example.shoppingassistantnew;
导入com.cyrimottier.android.greendroid.R;
//导入com.example.shoppingassistantnew.main.ProductData;
导入android.app.ActionBar.LayoutParams;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.app.Dialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.WindowManager;
导入android.widget.Button;
导入android.widget.DatePicker;
导入android.widget.EditText;
导入android.widget.ListView;
导入grendroid.app.GDActivity;
公共类AddShoppingList扩展活动实现OnClickListener{
//私有静态最终ProductData MPProductData=new ProductData();
ProductData MPProductData=新产品数据();
按钮MSAVBTTN;
编辑文本mBarcodeEdit;
编辑文本格式;
ProductDatabaseHelper=null;
//游标模型=空;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.addshoppinglist);
msavebtn=(按钮)findViewById(R.id.saveBttn);
msavbttn.setOnClickListener(此);
dt=(日期选择器)findViewById(R.id.datePicker1);
helper=新的ProductDatabaseHelper(此);
}
公共void onClick(视图v){
//TODO自动生成的方法存根
开关(v.getId()){
案例R.id.saveBttn:
mBarcodeEdit=(EditText)findViewById(R.id.shoppingListNameEdit);
mFormatEdit=(EditText)findViewById(R.id.shoppingDateEdit);
mProductData.setBarcode(mBarcodeEdit.getText().toString());
mProductData.setFormat(mFormatEdit.getText().toString());
insert(mBarcodeEdit.getText().toString(),mFormatEdit.getText().toString());
showInfoDialog(此“成功”、“产品保存成功”);
//model.requery();
打破
}
}
私有void showInfoDialog(上下文上下文、字符串标题、字符串信息){
新建AlertDialog.Builder(上下文)
.setMessage(信息)
.setTitle(标题)
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
}
}).show();
}
}
ProductDatabase.java
package com.example.shoppingassistantnew;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteDatabase.CursorFactory;
导入android.database.sqlite.SQLiteOpenHelper;
导入android.util.Log;
类ProductDatabaseHelper扩展了SQLiteOpenHelper{
私有静态最终字符串PRODUCT_TABLE=“products”;
私有静态最终字符串数据库\u NAME=“spot\u pay.db”;
私有静态最终int模式_版本=1;
专用数据库数据库;
私有静态最终字符串标记=null;
public ProductDatabaseHelper(上下文){
super(上下文、数据库名称、null、模式版本);
//TODO自动生成的构造函数存根
}
@凌驾
public void onCreate(SQLiteDatabase db){
//TODO自动生成的方法存根
db.execSQL(“创建表产品(_idinteger主键自动递增、条形码文本、格式文本);”;
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
//TODO自动生成的方法存根
db.execSQL(“如果存在删除表”+产品表);
onCreate(db);
}
/*
*公共ProductDatabase(上下文上下文){ProductDatabaseHelper=
*新产品DatabaseHelper(上下文);db=helper.getWritableDatabase();
* 
* }
*/
公共游标getAll(){
//TODO自动生成的方法存根
返回(getReadableDatabase()
.rawQuery(“按条形码从产品订单中选择_id、条形码、格式”,
空);
}
公共作废插入(字符串条形码、字符串格式){
ContentValues vals=新ContentValues();
VAL.put(“条形码”,条形码);
VAL.put(“格式”,格式);
getWritableDatabase()。插入(“产品”,null,VAL);
}
公共字符串getBarcode(光标c){
//TODO自动生成的方法存根
返回(c.getString(1));
}
公共字符串格式(游标c){
//TODO自动生成的方法存根
返回(c.getString(2));
}
}
row.xml
ShoppingList.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<ListView
    android:id="@+id/shoppingList"

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

   />




</LinearLayout>


您没有在游标适配器的
bindView()
中执行任何操作,因此您将永远看不到行中的任何数据。您需要这样做:

@Override
public void bindView(View row, Context ctxt, Cursor c) {
    ShoppingListHolder holder=(ShoppingListHolder)row.getTag();
    holder.barcode.setText(c.getString(c.getColumnIndex("barcode"))); 
    holder.format.setText(c.getString(c.getColumnIndex("format")));
}

调用
helper.getAll()后,光标中是否有数据
如果是,请尝试在前一行之后和之前使用
model.moveToFirst()


adapter=新ShoppingListAdapter(型号)

调用helper.getAll()后,光标中是否有数据;我还有一个问题…在我添加数据后,我的listview将不会自动升级…有什么方法可以解决吗?听起来你需要刷新