Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将改造后的数据存储到sqlite数据库_Android_Sqlite_Retrofit_Sql Insert - Fatal编程技术网

Android 如何将改造后的数据存储到sqlite数据库

Android 如何将改造后的数据存储到sqlite数据库,android,sqlite,retrofit,sql-insert,Android,Sqlite,Retrofit,Sql Insert,我已使用改装从服务器检索数据 现在我正在尝试使用sqlite数据库进行存储。 但程序未在BaseApter类和MainFragment中运行get错误 FATAL EXCEPTION: main Process: com.example.s2r1.appointment, PID: 6560

我已使用改装从服务器检索数据 现在我正在尝试使用sqlite数据库进行存储。 但程序未在BaseApter类和MainFragment中运行get错误

 FATAL EXCEPTION: main
                                                                        Process: com.example.s2r1.appointment, PID: 6560
                                                                        java.lang.NullPointerException
                                                                            at com.example.s2r1.appointment.ApointmentAdapter.getCount(ApointmentAdapter.java:42)
                                                                            at android.widget.ListView.setAdapter(ListView.java:480)
                                                                            at com.example.s2r1.appointment.StatusFragment.onCreateView(StatusFragment.java:65)
                                                                            at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
                                                                            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
                                                                            at android.os.Handler.handleCallback(Handler.java:733)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5241)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
                                                                            at dalvik.system.NativeStart.main(Native Method)
我的模特课帖子

 FATAL EXCEPTION: main
                                                                        Process: com.example.s2r1.appointment, PID: 6560
                                                                        java.lang.NullPointerException
                                                                            at com.example.s2r1.appointment.ApointmentAdapter.getCount(ApointmentAdapter.java:42)
                                                                            at android.widget.ListView.setAdapter(ListView.java:480)
                                                                            at com.example.s2r1.appointment.StatusFragment.onCreateView(StatusFragment.java:65)
                                                                            at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
                                                                            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
                                                                            at android.os.Handler.handleCallback(Handler.java:733)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5241)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
                                                                            at dalvik.system.NativeStart.main(Native Method)
在那门课上我设置了getter和setter

public class Post {

    @SerializedName("id")
    @Expose
    private int id;

    @SerializedName("name")
    @Expose
    private String name;

    @SerializedName("age")
    @Expose
    private String age;

    @SerializedName("city")
    @Expose
    private String city;

    @SerializedName("mob")
    @Expose
    private String mob;
我的界面

public interface ApiInterface {

    @GET("fetch.php")
    Call<List<Post>> getContacts();

}
要在其中存储数据的数据库类

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "ApointmentDb.db";
    public static final String TABLE_NAME = "ApointList";
    public static final String TAG_ID = "id";
    public static final String TAG_NAME = "name";
    public static final String TAG_AGE = "age";
    public static final String TAG_CITY = "city";
    public static final String TAG_MOB = "mob";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }



    @Override
    public void onCreate(SQLiteDatabase db) {

        String createTable = "CREATE TABLE " + TABLE_NAME + "" +
                "("
                + TAG_ID + " id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
                + TAG_NAME + " TEXT,"
                + TAG_AGE + " TEXT,"
                + TAG_CITY + " TEXT, "
                + TAG_MOB + " TEXT)";


        db.execSQL(createTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {

        db.execSQL("DROP IF TABLE EXISTS" + TABLE_NAME);


    }

    public void addData(Post post) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(TAG_ID, post.getId());
        contentValues.put(TAG_NAME, post.getName());
        contentValues.put(TAG_AGE, post.getName());
        contentValues.put(TAG_CITY, post.getName());
        contentValues.put(TAG_MOB, post.getName());


        db.insert(TABLE_NAME, null, contentValues);
        db.close();
    }
和适配器类

public class ApointmentAdapter  extends BaseAdapter {


    Context mContext;
    private List<Post> mContact;

    public ApointmentAdapter(List<Post> mContact, Context mContext) {
        this.mContact = mContact;
        this.mContext = mContext;
    }

    public  class ViewHolder {

        public TextView tvId;
        public TextView tvName;
        public TextView tvAge;
        public TextView tvCity;
        public TextView tvMob;
    }

    @Override
    public int getCount() {
        return mContact.size();
    }

    @Override
    public Object getItem(int position) {
        return mContact.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }


    public void addPost(Post post) {
        mContact.add(post);
        notifyDataSetChanged();
    }


    @Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {

        View vi = convertView;
        ViewHolder holder;

        if (convertView == null) {

            LayoutInflater inflater;
            inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

            vi = inflater.inflate(R.layout.status_item_layout, null);

            holder = new ViewHolder();

            holder.tvId  = (TextView) vi.findViewById(R.id.tv_status_id);
            holder.tvName  = (TextView) vi.findViewById(R.id.tv_status_name);
            holder.tvAge  = (TextView) vi.findViewById(R.id.tv_status_age);
            holder.tvCity  = (TextView) vi.findViewById(R.id.tv_status_city);
            holder.tvMob = (TextView) vi.findViewById(R.id.tv_status_mob);

            vi.setTag(holder);

        } else
            holder = (ViewHolder) vi.getTag();

        // now set your text view here like

       holder.tvId.setText(String.valueOf(mContact.get(position).getId()));
        holder.tvName.setText(mContact.get(position).getName());
        holder.tvAge.setText(mContact.get(position).getAge());
        holder.tvCity.setText(mContact.get(position).getCity());
        holder.tvMob.setText(mContact.get(position).getMob());

        // return your view
        return vi;


    }
}
在主课上

listView.setAdapter(adapter);
我哪里做错了

Logcat

 FATAL EXCEPTION: main
                                                                        Process: com.example.s2r1.appointment, PID: 6560
                                                                        java.lang.NullPointerException
                                                                            at com.example.s2r1.appointment.ApointmentAdapter.getCount(ApointmentAdapter.java:42)
                                                                            at android.widget.ListView.setAdapter(ListView.java:480)
                                                                            at com.example.s2r1.appointment.StatusFragment.onCreateView(StatusFragment.java:65)
                                                                            at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
                                                                            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
                                                                            at android.os.Handler.handleCallback(Handler.java:733)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5241)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
                                                                            at dalvik.system.NativeStart.main(Native Method)

首先,您需要发布错误日志,但有一件事我注意到,在将联系人列表传递给适配器之前,您在哪里初始化联系人列表?是的,首先,我直接将数据返回到我的listview,但现在我想将其存储到db中,而不将其添加到listview中。您尚未初始化数组列表@AhmedBasyouny是正确的。。。当您尝试setAdapter@SayedRizwanHashmi在片段中获取上下文时,使用getContex();因为getActivity有时会返回null谢谢@akshay_shahane
 FATAL EXCEPTION: main
                                                                        Process: com.example.s2r1.appointment, PID: 6560
                                                                        java.lang.NullPointerException
                                                                            at com.example.s2r1.appointment.ApointmentAdapter.getCount(ApointmentAdapter.java:42)
                                                                            at android.widget.ListView.setAdapter(ListView.java:480)
                                                                            at com.example.s2r1.appointment.StatusFragment.onCreateView(StatusFragment.java:65)
                                                                            at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
                                                                            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
                                                                            at android.os.Handler.handleCallback(Handler.java:733)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5241)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
                                                                            at dalvik.system.NativeStart.main(Native Method)