SQLView数据库未显示在ListView

时间:2016-04-06 19:55:48

标签: java sqlite listview android-fragments android-studio

先谢谢你帮助我。这是我第一次使用SQLite数据库以及创建应用程序。

问题:当我在AddEntry.xml上单击保存“ImageButton”时出于某种原因它没有显示在我的列表视图中,该列表视图位于我的Fragment Home.xml中。我发现片段有点困难,因为你必须改变代码才能使它工作。所以请原谅我的代码到处都是。

AddEntry.java

      public class AddEntry extends Fragment implements View.OnClickListener
    {

      EditText DescriptionET,CalorieET;
      ImageButton Savebtn, Cancelbtn;

      String description , calorieAmt;
       CalorieDatabase calorieDB;


           public AddEntry() {
           // Required empty public constructor
      }


       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup
        container,
                         Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       View myView = inflater.inflate(R.layout.fragment_add_entry,
      container, false);

      Savebtn = (ImageButton) myView.findViewById(R.id.SaveBtn);
      Savebtn.setOnClickListener(this);


      Cancelbtn = (ImageButton) myView.findViewById(R.id.CancelBtn);
      Cancelbtn.setOnClickListener(this);
      return myView;
  }


      @Override
      public void onViewCreated(View view, Bundle savedInstanceState) {
       super.onViewCreated(view, savedInstanceState);

       DescriptionET= (EditText)view.findViewById(R.id.foodEditText);
       CalorieET=(EditText)view.findViewById(R.id.caloriesEditText);

    }


        @Override
        public void onClick(View v) {
        switch (v.getId()) {


        case R.id.SaveBtn:


            description = DescriptionET.getText().toString();
            calorieAmt=CalorieET.getText().toString();




             ((appMain) getActivity()).loadSelection(0);


            break;


            case R.id.CancelBtn:

              EditText descriptionET=
           (EditText)getView().findViewById(R.id.foodEditText);
          descriptionET.setText("");


            EditText calorieET= 
          (EditText)getView().findViewById(R.id.caloriesEditText);
            calorieET.setText("");

                break;
           }
      }


          @Override
          public void onDestroy() {
          super.onDestroy();

           }

          @Override
         public void onDetach() {
         super.onDetach();
          } 

      }

FragmentHome.java

                 public class FragmentHome extends Fragment implements 
                 View.OnClickListener  {

                public static final String ARG_SECTION_NUMBER = 
              "section_number";

               public static final String ARG_ID = "_id";
               private TextView label;
               private int sectionNumber = 0;
               private Calendar fragmentDate;
               ListView  listview;
               ImageButton AddEntrybtn;
               CalorieDatabase calorieDB;
               private View v;



         private android.support.v4.app.FragmentManager fragmentManager;

         private FragmentTransaction fragmentTransaction;

          public FragmentHome() {
           // Required empty public constructor
           }


             @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup
             container,
                         Bundle savedInstanceState) {

            View myView = inflater.inflate(R.layout.fragment_home,
           container, false);


           label= (TextView) myView.findViewById(R.id.section_label);


          AddEntrybtn = (ImageButton) myView.findViewById(R.id.AddItems);
          AddEntrybtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
            ((appMain)getActivity()).loadSelection(1);
           }
        });

          return myView;
       }




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

             Bundle username = getActivity().getIntent().getExtras();



             String username1 = username.getString("Username");

             TextView userMain= (TextView)
             getView().findViewById(R.id.User);

              userMain.setText(username1);


             openDataBase();

          }



                  private  void openDataBase (){


                 calorieDB= new CalorieDatabase(getActivity());
                 calorieDB.open();


         }


             private void closeDataBase(){
             calorieDB.close();
        };


             private   void populateLVFromDB(){

             Cursor cursor = calorieDB.getAllRows();




              String[] fromFieldNames = new String[]
            {CalorieDatabase.KEY_NAME, CalorieDatabase.KEY_CalorieValue};
             int[] toViewIDs = new int[]
            {R.id.foodEditText,     R.id.caloriesEditText,           };


              SimpleCursorAdapter myCursorAdapter =
              new SimpleCursorAdapter(
                    getActivity(),      
                   R.layout.row_item,
                    cursor,                 
                    fromFieldNames,         
                    toViewIDs           
            );

             // Set the adapter for the list view
          listview = (ListView) getActivity().findViewById(R.id.listViewDB);
          listview.setAdapter(myCursorAdapter);


     }



               @Override
               public void onResume() {
               super.onResume();
               // set label to selected date.  Get date from Bundle.
               int dayOffset = sectionNumber - 
               FragmentHomeDayViewPager.pagerPageToday;
               fragmentDate = Calendar.getInstance();

               fragmentDate.add(Calendar.DATE, dayOffset);
               SimpleDateFormat sdf = new
               SimpleDateFormat(appMain.dateFormat);

               String labelText = sdf.format(fragmentDate.getTime());
               switch (dayOffset) {
                case 0:
            labelText += " (Today)";
            break;
              case 1:
            labelText += " (Tomorrow)";
            break;
            case -1:
            labelText += " (Yesterday)";
            break;
           }
              label.setText(labelText);

         }

                     @Override
                    public void onDestroy() {
                    super.onDestroy();
                    closeDataBase();
                }



                     @Override
                     public void onDetach() {
                     super.onDetach();

               startActivity( new Intent(getContext(),MainActivity.class));
               }


                       @Override
                       public void onClick(View v) {
                       switch (v.getId()) {
                       case R.id.AddItems:

                    AddEntry addEntry    = new AddEntry();

                   fragmentTransaction = fragmentManager.beginTransaction();
                   fragmentTransaction.addToBackStack(null);
                   fragmentTransaction.replace(R.id.FragmentHolder,addEntry)

                    .commit();


                    break;
                }


               }
           }

CalorieDatabase.java

               public class CalorieDatabase {

               //   Constants & Data

               private static final String TAG = "DBAdapter";

               // DB Fields
               public static final String KEY_ROWID = "_id";
               public static final int COL_ROWID = 0;

               public static final String KEY_NAME = "Description";

               public static final String KEY_CalorieValue = "Calories";

               public static final int COL_NAME = 1;
               public static final int COL_CalorieValue= 2;



               public static final String[] ALL_KEYS = new String[]
               {KEY_ROWID, KEY_NAME, KEY_CalorieValue};


              public static final String DATABASE_NAME = "CalorieDb";
              public static final String DATABASE_TABLE = "Calorie_Info";

              public static final int DATABASE_VERSION = 1;

           private static final String DATABASE_CREATE_SQL =
           "create table " + DATABASE_TABLE
                + " (" + KEY_ROWID + " integer primary key autoincrement, "
                + KEY_NAME + " text not null, "
                + KEY_CalorieValue + " integer not null "
                + ");";


              private final Context context;

              private DatabaseHelper myDBHelper;
              private SQLiteDatabase db;



              public CalorieDatabase(Context ctx) {
             this.context = ctx;
              myDBHelper = new DatabaseHelper(context);
           }

                 // Open the database connection.
                public CalorieDatabase open() {
                db = myDBHelper.getWritableDatabase();
                return this;
              }

                // Close the database connection.
                 public void close() {
                myDBHelper.close();
           }

             // Add a new set of values to the database.
            public long insertRow(String description, int CalorieVal) {

            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_NAME, description);
            initialValues.put(KEY_CalorieValue, CalorieVal);


             // Insert it into the database.
             return db.insert(DATABASE_TABLE, null, initialValues);
           }

            // Delete a row from the database, by rowId (primary key)
           public boolean deleteRow(long rowId) {
           String where = KEY_ROWID + "=" + rowId;
           return db.delete(DATABASE_TABLE, where, null) != 0;
        }

            public void deleteAll() {
            Cursor c = getAllRows();
            long rowId = c.getColumnIndexOrThrow(KEY_ROWID);
            if (c.moveToFirst()) {
            do {
            deleteRow(c.getLong((int) rowId));
            } while (c.moveToNext());
          }
            c.close();
          }

          // Return all data in the database.
         public Cursor getAllRows() {
         String where = null;
         Cursor c =     db.query(true, DATABASE_TABLE, ALL_KEYS,
            where, null, null, null, null, null);
          if (c != null) {
          c.moveToFirst();
          }
          return c;
      }

         // Get a specific row (by rowId)
         public Cursor getRow(long rowId) {
        String where = KEY_ROWID + "=" + rowId;
        Cursor c =  db.query(true, DATABASE_TABLE, ALL_KEYS,
            where, null, null, null, null, null);
         if (c != null) {
          c.moveToFirst();
        }
        return c;
        }

        // Change an existing row to be equal to new data.
       public boolean updateRow(long rowId, String description, int 
      CalorieValue) {
      String where = KEY_ROWID + "=" + rowId;


       ContentValues newValues = new ContentValues();
       newValues.put(KEY_NAME, description);
       newValues.put(KEY_CalorieValue, CalorieValue);


         // Insert it into the database.
       return db.update(DATABASE_TABLE, newValues, where, null) != 0;
    }


         private static class DatabaseHelper extends SQLiteOpenHelper
     {
         DatabaseHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }

         @Override
         public void onCreate(SQLiteDatabase _db) {
        _db.execSQL(DATABASE_CREATE_SQL);
      }

                     @Override
        public void onUpgrade(SQLiteDatabase _db, int oldVersion, int  
        newVersion) {
        Log.w(TAG, "Upgrading application's database from version " + 
        oldVersion
                + " to " + newVersion + ", which will destroy all old 
         data!");

        // Destroy old database:
        _db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);

        // Recreate new database:
        onCreate(_db);

         }
         }
    }

再次感谢您帮助我。在过去的几天里,我一直在努力想要解决这个问题。

0 个答案:

没有答案