微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用加载管理器数据库中的 contentprovider 在微调器中显示刚刚插入的数据

如何解决使用加载管理器数据库中的 contentprovider 在微调器中显示刚刚插入的数据

我正在尝试在微调器上显示我刚刚插入到数据库中的值。我尝试使用此方法,但仍然遇到问题。你能帮助我吗?课程位置仍然为零。

 public int getIndexOfCourse(int courseId){
       mCursor = mAdapterCourses.getCursor();
       int coursePosition=0;
       for (int i =1;i<= mAdapterCourses.getCount();i++){
           mCursor.movetoPosition(i);
           int temp = mCursor.getInt(mCursor.getColumnIndex(Courses._ID));
           if(temp == courseId) {
               coursePosition = i;
               break;
           }
       }
       return coursePosition;
    }

整个Activity如下(请注意,我是一个相对较新的Android开发者,稍微解释一下会有所帮助,谢谢)

    package com.waliyyullah.lecturenotes;

import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;

import com.waliyyullah.lecturenotes.LectureNoteDatabaseContract.LectureCourseInfoEntry;
import com.waliyyullah.lecturenotes.LectureNotesProviderContract.Courses;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.CursorLoader;
import androidx.loader.content.Loader;

import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.Calendar;

import static com.waliyyullah.lecturenotes.LectureNotesProviderContract.Notes.*;
import static com.waliyyullah.lecturenotes.LectureNotesProviderContract.Notes.COLUMN_COURSE_ID;
import static com.waliyyullah.lecturenotes.LectureNotesProviderContract.Notes.CONTENT_URI;


   public class ExTradetailsActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor>,View.OnClickListener {

       private static final int LOADER_COURSES = 0;
       private Spinner mSpinnerCourse;
       private SimpleCursorAdapter mAdapterCourses;
       private String mAddaCourse;
       Uri mUri;
       Uri mNoteUri;
       private Button mAddaNewNoteButton;
       private ProgressDialog mProgressDialog;
       private ImageButton mNewCourseButton;
       private Cursor mCursor;
      


       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_extra_details);
           Toolbar toolbar = findViewById(R.id.toolbar);
           setSupportActionBar(toolbar);
           initLayout();
           addCourseSpinner();

       }


       private void insertCourse() {
           @SuppressLint("StaticFieldLeak") AsyncTask<Uri,Integer,Long> task =new AsyncTask<Uri,Long>() {
               @Override
               protected void onPreExecute() {
                   mProgressDialog = new ProgressDialog(ExTradetailsActivity.this);
                   mProgressDialog.setMessage("Please Wait");
                   mProgressDialog.setCancelable(false);
                   mProgressDialog.show();
               }

               @Override
               protected Long doInBackground(Uri... uris) {
                   ContentValues newValues = new ContentValues();
                   newValues.put(LectureCourseInfoEntry.COLUMN_YEAR,Calendar.getInstance().getTime().getYear());
                   newValues.put(LectureCourseInfoEntry.COLUMN_SEMESTER,"First");
                   newValues.put(LectureCourseInfoEntry.COLUMN_COURSE,mAddaCourse);
                   mUri = getContentResolver().insert(Courses.CONTENT_URI,newValues);
                  return ContentUris.parseId(mUri);
               }


               @Override
               protected void onPostExecute(Long aLong) {
                  getSupportLoaderManager().restartLoader(LOADER_COURSES,null,ExTradetailsActivity.this);
                  mSpinnerCourse.setSelection(getIndexOfCourse(Integer.parseInt(Long.toString(aLong))));

                   mProgressDialog.dismiss();
               }
           };
           task.execute();

       }
       private void addCourseSpinner() {
           mAdapterCourses = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,new String[]{LectureCourseInfoEntry.COLUMN_COURSE},new int[]{android.R.id.text1},0);
           mAdapterCourses.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           mSpinnerCourse.setAdapter(mAdapterCourses);
           getSupportLoaderManager().initLoader(LOADER_COURSES,this);


       }
       private int getIndexOfCourseId(int courseId) {
           Cursor cursor = mAdapterCourses.getCursor();
           int courseIdPos = cursor.getColumnIndex(Courses._ID);
           int courseRowIndex = 0;

           boolean more = cursor.movetoFirst();
           while (more) {
               int cursorCourseId = cursor.getInt(courseIdPos);
               if (courseId ==  cursorCourseId)
                   break;

               courseRowIndex++;
               more = cursor.movetoNext();
           }
            return courseRowIndex;
       }
       public int getIndexOfCourse(int courseId){
           mCursor = mAdapterCourses.getCursor();
           int coursePosition=0;
           for (int i =1;i<= mAdapterCourses.getCount();i++){
               mCursor.movetoPosition(i);
               int temp = mCursor.getInt(mCursor.getColumnIndex(Courses._ID));
               if(temp == courseId) {
                   coursePosition = i;
                   break;
               }
           }
           return coursePosition;
        }

       private void initLayout() {
           mSpinnerCourse = findViewById(R.id.spinner_course);
           mAddaNewNoteButton = findViewById(R.id.new_note_button);
           mNewCourseButton = findViewById(R.id.new_course_button);
           mNewCourseButton.setonClickListener(this);
           mAddaNewNoteButton.setonClickListener(this);
       }
       @Override
       public Loader<Cursor> onCreateLoader(int id,Bundle args) {
           CursorLoader loader = null;
           if (id == LOADER_COURSES) {
               final String[] courseColumns = {
                       Courses._ID,Courses.COLUMN_COURSE
               };
               loader = new CursorLoader(this,Courses.CONTENT_URI,courseColumns,Courses._ID);
           }

           return loader;
       }
       @Override
       public void onLoadFinished(@NonNull Loader<Cursor> loader,Cursor data) {
           if (loader.getId() == LOADER_COURSES) {
               mAdapterCourses.changeCursor(data);
               mAdapterCourses.notifyDataSetChanged();


           }
       }
       @Override
       public void onLoaderReset(@NonNull Loader<Cursor> loader) {
           if (loader.getId() == LOADER_COURSES)
               mAdapterCourses.changeCursor(null);
       }

       @Override
       public void onClick(View view) {
           switch (view.getId()){
               case R.id.new_note_button:
                   Intent intent = new Intent(ExTradetailsActivity.this,NoteActivity.class);
                   startActivity(intent);
                   break;

               case R.id.new_course_button:
                   LayoutInflater inflater = LayoutInflater.from(ExTradetailsActivity.this);
                   final View customView = inflater.inflate(R.layout.fragment_add_a_course_dialog,null);
                   final EditText editTextCourse = customView.findViewById(R.id.editTextCourse);

                   AlertDialog dialog = new AlertDialog.Builder(ExTradetailsActivity.this)
                           .setTitle("ADD A NEW COURSE")
                           .setView(customView)
                           .setPositiveButton("SAVE",new DialogInterface.OnClickListener() {
                               @Override
                               public void onClick(DialogInterface dialogInterface,int i) {
                                   mAddaCourse = editTextCourse.getText().toString();

                                   if(!mAddaCourse.isEmpty()) {
                                       insertCourse();
                                       } else {
                                       Toast.makeText(ExTradetailsActivity.this,"Insert a new course",Toast.LENGTH_LONG).show();
                                   }
                               }
                           }).create();
                   dialog.show();
                   break;
           }

           }

       }



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。