将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中

Posted

技术标签:

【中文标题】将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中【英文标题】:pass Data from a List View (generated from Rest Api) to another activity and save that into SQLite Database 【发布时间】:2016-11-01 15:24:11 【问题描述】:

我正在使用 REST api 通过 XML 提要从 Job 站点创建一个 android 应用程序(仍然是基本结构,没有任何设计)。

到目前为止,我可以设法解析 XML 数据,在每行显示带有 POP UP 菜单项的列表视图。我将数据从 PostBaseAdapter 传递给 MarkAsFav 类。你能告诉我我做得对吗?因为,我没有在数据库中保存任何数据 现在,我有一个问题:

我有 3 个弹出菜单项: 1.设置为收藏 2. 在脸书上分享 3. 发邮件给你的朋友

我正在处理第 1 点。

现在,我会将数据保存在 SQLite 数据库本身中。因此,我将所有数据(有关所有行的作业的所有详细信息)传递给另一个活动,此外,我接受用户名以通过 insertDB() 在我的数据库中保存详细信息。

但是,不幸的是,数据库中没有保存任何内容。 你能告诉我,数据是否通过,数据是否保存在数据库中?

请帮帮我。请告诉我在哪里以及如何修改代码?

DBHelper.java

    public class DBHelper extends SQLiteOpenHelper 

    public static final String DATABASE_NAME ="MyDB.db";
    public static final String JOBS_TABLE_NAME = "favourites";
    public static final String JOBS_COLUMN_ID = "id";
    public static final String JOBS_COLUMN_NAME = "name";
    public static final String JOBS_COLUMN_HEADER="header";
    public static final String JOBS_COLUMN_COMPANY="company";
    public static final String JOBS_COLUMN_CITY="city";
    public static final String JOBS_COLUMN_STATE="state";
    public static final String JOBS_COLUMN_COUNTRY="country";
    public static final String JOBS_COLUMN_FORMATEDLOCATION="formatedLocation";
    public static final String JOBS_COLUMN_SOURCE="source";
    public static final String JOBS_COLUMN_DATE="date";
    public static final String JOBS_COLUMN_SNIPPET="snippet";
    public static final String JOBS_COLUMN_URL="url";
    public static final String JOBS_COLUMN_ONMOUSEDOWN="onmousedown";
    public static final String JOBS_COLUMN_LATTITUDE="lattitude";
    public static final String JOBS_COLUMN_LONGITUDE="longitude";
    public static final String JOBS_COLUMN_JOBKEY="jobkey";
    public static final String JOBS_COLUMN_SPONSORED="sponsored";
    public static final String JOBS_COLUMN_EXPIRED="expired";
    public static final String JOBS_COLUMN_FORMATTEDLOCATIONFULL="formattedLocationFull";
    public static final String JOBS_COLUMN_FORMATTEDRELATIVETIME="formattedRelativeTime";
    private HashMap hp;

    public DBHelper(Context context)
    
        super(context, DATABASE_NAME , null, 1);
    

    @Override
    public void onCreate(SQLiteDatabase db) 
        // TODO Auto-generated method stub
        db.execSQL(
                "create table" + JOBS_TABLE_NAME  +
                        "("+JOBS_COLUMN_ID+" integer primary key autoincrement, "+JOBS_COLUMN_HEADER+" text, "+JOBS_COLUMN_NAME+" text,"+JOBS_COLUMN_COMPANY+" text, "+JOBS_COLUMN_CITY+" text, "+JOBS_COLUMN_STATE+" text, "+JOBS_COLUMN_COUNTRY+" text,"+JOBS_COLUMN_FORMATEDLOCATION+" text,"+JOBS_COLUMN_SOURCE+" text,"+JOBS_COLUMN_DATE+" text,"+JOBS_COLUMN_SNIPPET+" text,"+JOBS_COLUMN_COMPANY+" text,"+JOBS_COLUMN_URL+"text,"+JOBS_COLUMN_ONMOUSEDOWN+" text,"+JOBS_COLUMN_LATTITUDE+" text,"+JOBS_COLUMN_LONGITUDE+"text,"+JOBS_COLUMN_JOBKEY+" text,"+JOBS_COLUMN_SPONSORED+" text,"+JOBS_COLUMN_EXPIRED+" text,"+JOBS_COLUMN_FORMATTEDLOCATIONFULL+" text,"+JOBS_COLUMN_FORMATTEDRELATIVETIME+" text)"
        );

    

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS favourites");
        onCreate(db);
    

    public boolean insertContact(String header, String name,String company,String city,String state,String country,String formattedLocation,String source,String date,String snippet,String url,String onmousedown,String lattitude,String longitude,String jobkey,String sponsored,String expired, String formattedLocationFull,String formattedRelativeTime)
    
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        //contentValues.put("id",id);
        contentValues.put(JOBS_COLUMN_HEADER,header);
        contentValues.put(JOBS_COLUMN_NAME, name);
        contentValues.put(JOBS_COLUMN_COMPANY, company);
        contentValues.put(JOBS_COLUMN_CITY, city);
        contentValues.put(JOBS_COLUMN_STATE, state);
        contentValues.put(JOBS_COLUMN_COUNTRY, country);
        contentValues.put(JOBS_COLUMN_FORMATEDLOCATION, formattedLocation);
        contentValues.put(JOBS_COLUMN_SOURCE, source);
        contentValues.put(JOBS_COLUMN_DATE, date);
        contentValues.put(JOBS_COLUMN_SNIPPET, snippet);
        contentValues.put(JOBS_COLUMN_URL, url);
        contentValues.put(JOBS_COLUMN_ONMOUSEDOWN, onmousedown);
        contentValues.put(JOBS_COLUMN_LATTITUDE, lattitude);
        contentValues.put(JOBS_COLUMN_LONGITUDE, longitude);
        contentValues.put(JOBS_COLUMN_JOBKEY, jobkey);
        contentValues.put(JOBS_COLUMN_SPONSORED, sponsored);
        contentValues.put(JOBS_COLUMN_EXPIRED, expired);
        contentValues.put(JOBS_COLUMN_FORMATTEDLOCATIONFULL, formattedLocationFull);
        contentValues.put(JOBS_COLUMN_FORMATTEDRELATIVETIME, formattedRelativeTime);

        db.insert("favourites", null, contentValues);
        return true;
    

    public Cursor getData(int id)
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from favourites where id="+id+"", null );
        return res;
    

    public int numberOfRows()
        SQLiteDatabase db = this.getReadableDatabase();
        int numRows = (int) DatabaseUtils.queryNumEntries(db, JOBS_TABLE_NAME);
        return numRows;
    

    public boolean updateContact (Integer id, String name)
    
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", name);

        db.update("favourites", contentValues, "id = ? ", new String[]  Integer.toString(id)  );
        return true;
    

    public Integer deleteContact (Integer id)
    
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete("favourites",
                "id = ? ",
                new String[]  Integer.toString(id) );
    

    public ArrayList<String> getAllCotacts()
    
        ArrayList<String> array_list = new ArrayList<String>();

        //hp = new HashMap();
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from favourites", null );
        res.moveToFirst();

        while(res.isAfterLast() == false)
            array_list.add(res.getString(res.getColumnIndex(JOBS_COLUMN_NAME)));
            res.moveToNext();
        
        return array_list;
    

MarkAsFav.java

public class MarkAsFav extends Activity 

    private DBHelper mydb;

    TextView header;

    int id_To_Update = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mark_fav_layout);
        header = (TextView) findViewById(R.id.editTextName);

        mydb = new DBHelper(this);

        Intent extras = getIntent();
        if (extras != null) 
            int Value = extras.getIntExtra("id",0);

            if (Value > 0) 
                //means this is the view part not the add contact part.
                Cursor rs = mydb.getData(Value);
                id_To_Update = Value;
                rs.moveToFirst();

                String nam = rs.getString(rs.getColumnIndex(DBHelper.JOBS_COLUMN_NAME));

                if (!rs.isClosed()) 
                    rs.close();
                
                Button b = (Button) findViewById(R.id.button1);
                b.setVisibility(View.INVISIBLE);

                header.setText((CharSequence) nam);
                header.setFocusable(false);
                header.setClickable(false);

            
        
    


    public void run(View view) 
        Intent extras = getIntent();
        if (extras != null) 

            int val = extras.getIntExtra("id",0);
            String value1 = extras.getStringExtra("title");
            String value2=  extras.getStringExtra("company");
            String value3=  extras.getStringExtra("city");
            String value4=  extras.getStringExtra("state");
            String value5=  extras.getStringExtra("country");
            String value6=  extras.getStringExtra("formattedLocation");
            String value7=  extras.getStringExtra("source");
            String value8=  extras.getStringExtra("date");
            String value9=  extras.getStringExtra("snippet");
            String value10=  extras.getStringExtra("url");
            String value11=  extras.getStringExtra("onmousedown");
            String value12=  extras.getStringExtra("lattitude");
            String value13=  extras.getStringExtra("longitude");
            String value14=  extras.getStringExtra("jobkey");
            String value15=  extras.getStringExtra("sponsored");
            String value16=  extras.getStringExtra("expired");
            String value17=  extras.getStringExtra("formattedLocationFull");
            String value18=  extras.getStringExtra("formattedRelativeTime");

            String headerValue = header.getText().toString();
            Log.e("ERROR", "Inside run and checking Value and val");
            if (val > 0) 
                /*if (mydb.updateContact(id_To_Update, header.getText().toString())) 
                    Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(intent);
                    Log.e("ERROR", "update error");
                 else 
                    Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();
                
            
            else */
                if (mydb.insertContact(headerValue, value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,value11,value12,value13,value14,value15,value16,value17,value18)) 
                    Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show();
                    Log.e("ERROR", "insert contact errors");
                 else 
                    Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show();
                
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);
            
        
    

PostBaseAdapter.java

public class PostBaseAdapter extends BaseAdapter 

    private LayoutInflater layoutInflater;
    private ArrayList<Result> resultList;
    private MainActivity mActivity;
    private Context mContext;
    String TAG="";


    public PostBaseAdapter(Context context, ArrayList<Result> resultList) 
        this.layoutInflater = LayoutInflater.from(context);
        this.resultList = resultList;
        this.mContext= context;

    

    @Override
    public int getCount() 
        return resultList.size();
    

    @Override
    public Result getItem(int i) 
        return resultList.get(i);
    

    @Override
    public long getItemId(int i) 
        return i;
    

    @Override
    public View getView(int i, View convertView, ViewGroup parent) 
        final ViewHolder viewHolder;
        final int j=i;

        if (convertView == null) 
            convertView = layoutInflater.inflate(R.layout.list_item_post, null);
            //viewHolder = new ViewHolder(convertView);
            viewHolder= new ViewHolder();
            //View overFlow = convertView.findViewById(R.id.id_overflow);
            viewHolder.tvTitle =   (TextView)  convertView.findViewById(R.id.tvTitle);
            viewHolder.imageClick= (ImageView) convertView.findViewById(R.id.id_overflow);
            convertView.setTag(viewHolder);
            //overFlow.setOnClickListener(new OverflowSelectedListener(mContext, mActivity));

         else 
            viewHolder = (ViewHolder) convertView.getTag();
        

        final Result result = resultList.get(i);
        viewHolder.tvTitle.setText(result.getJobtitle());
        final String jobTitle=resultList.get(i).getJobtitle();
        final String company= resultList.get(i).getCompany();
        final String city=    resultList.get(i).getCity();
        final String state=   resultList.get(i).getState();
        final String country= resultList.get(i).getCountry();
        final String formattedLocation= resultList.get(i).getFormattedLocation();
        final String source=resultList.get(i).getSource();
        final String date= resultList.get(i).getDate();
        final String snippet= resultList.get(i).getSnippet();
        final String url=     resultList.get(i).getUrl();
        final String onmousedown= resultList.get(i).getOnmousedown();
        final String lattitude= resultList.get(i).getLattitude();
        final String longitude= resultList.get(i).getLongitude();
        final String jobkey=   resultList.get(i).getJobkey();
        final String sponsored= resultList.get(i).getSponsored();
        final String expired= resultList.get(i).getExpired();
        final String formattedLocaionfull= resultList.get(i).getFormattedLocation();
        final String formattedRelativeTime= resultList.get(i).getFormattedRelativeTime();



        try 


            viewHolder.imageClick.setOnClickListener(new View.OnClickListener() 

                @Override
                public void onClick(View v) 

                    switch (v.getId()) 
                        case R.id.id_overflow:

                            final PopupMenu popup = new PopupMenu(mContext, v);
                            popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
                            // Force icons to show

                            popup.show();
                            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() 

                                public boolean onMenuItemClick(MenuItem item) 
                                    int id_To_Search = j + 1;


                                    /*Intent intent = new Intent(mContext,MarkAsFav.class);

                                    intent.putExtras(dataBundle);
                                    mContext.startActivity(intent);*/
                                    switch (item.getItemId()) 


                                        case R.id.email_whatsapp:
                                            doEmailOrWhatsapp(mActivity);
                                            return true;

                                        case R.id.share_on_fb:
                                            shareOnFb(mActivity);
                                            return true;

                                        case R.id.mark_as_fav:
                                            //viewHolder.
                                          //dataBundle.putString("name", result.getJobtitle());
                                            Intent intent = new Intent(mContext,MarkAsFav.class);
                                            intent.putExtra("id",0);
                                            intent.putExtra("title", jobTitle  );
                                            intent.putExtra("company",company );
                                            intent.putExtra("city", city);
                                            intent.putExtra("state",state   );
                                            intent.putExtra("country",country );
                                            intent.putExtra("formattedLocation",formattedLocation );
                                            intent.putExtra("source",source );
                                            intent.putExtra("date", date);
                                            intent.putExtra("snippet", snippet);
                                            intent.putExtra("url", url);
                                            intent.putExtra("onmousedown",onmousedown );
                                            intent.putExtra("lattitude", lattitude);
                                            intent.putExtra("longitude",longitude );
                                            intent.putExtra("jobkey", jobkey);
                                            intent.putExtra("sponsored",sponsored );
                                            intent.putExtra("expired", expired);
                                            intent.putExtra("formattedLocationFull",formattedLocaionfull );
                                            intent.putExtra("formattedRelativeTime",formattedRelativeTime );

                                            //intent.putExtras(dataBundle);
                                            mContext.startActivity(intent);
                                            return true;
                                        default:
                                            break;
                                    

                                    return true;
                                
                            );
                            //popup.show();
                            break;

                        default:
                            break;
                    

                
            );


        
        catch (Exception e) 

            e.printStackTrace();
        

        return convertView;
    



    private class ViewHolder 
        TextView tvTitle;//, tvPublishDate;
        ImageView imageClick;
      /* public ViewHolder(View item) 
            tvTitle = (TextView) item.findViewById(R.id.tvTitle);*/
           // imageClick=(ImageView)item.findViewById(R.id.id_overflow);
           // tvPublishDate = (TextView) item.findViewById(R.id.tvPublishDate);
        

    

mark-fav-layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
        android:layout_
        android:layout_
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <EditText
            android:id="@+id/editTextName"
            android:layout_
            android:layout_
            android:layout_marginTop="5dp"
            android:ems="10"
            android:inputType="text" >
        </EditText>
        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_marginBottom="28dp"
            android:onClick="run"
            android:text="@string/save" />
 </LinearLayout>

结果.java

公开课结果

 public String jobtitle;
    public String company;
    public String city;
    public String state;
    public String country;
    public String formattedLocation;
    public String source;
    public String date;
    public String snippet;
    public String url;
    public String onmousedown;
    public String lattitude;
    public String longitude;
    public String jobkey;
    public String sponsored;
    public String expired;
    public String formattedLocationFull;
    public String formattedRelativeTime;
    public String getJobtitle() 
        return jobtitle;
    
    public void setJobtitle(String jobtitle) 
        this.jobtitle = jobtitle;
    
    public String getCompany() 
        return company;
    
    public void setCompany(String company) 
        this.company = company;
    
    public String getCity() 
        return city;
    
    public void setCity(String city) 
        this.city = city;
    
    public String getState() 
        return state;
    
    public void setState(String state) 
        this.state = state;
    
    public String getCountry() 
        return country;
    
    public void setCountry(String country) 
        this.country = country;
    
    public String getFormattedLocation() 
        return formattedLocation;
    
    public void setFormattedLocation(String formattedLocation) 
        this.formattedLocation = formattedLocation;
    
    public String getSource() 
        return source;
    
    public void setSource(String source) 
        this.source = source;
    
    public String getDate() 
        return date;
    
    public void setDate(String date) 
        this.date = date;
    
    public String getSnippet() 
        return snippet;
    
    public void setSnippet(String snippet) 
        this.snippet = snippet;
    
    public String getUrl() 
        return url;
    
    public void setUrl(String url) 
        this.url = url;
    
    public String getOnmousedown() 
        return onmousedown;
    
    public void setOnmousedown(String onmousedown) 
        this.onmousedown = onmousedown;
    
    public String getLattitude() 
        return lattitude;
    
    public void setLattitude(String lattitude) 
        this.lattitude = lattitude;
    
    public String getLongitude() 
        return longitude;
    
    public void setLongitude(String longitude) 
        this.longitude = longitude;
    
    public String getJobkey() 
        return jobkey;
    
    public void setJobkey(String jobkey) 
        this.jobkey = jobkey;
    
    public String getSponsored() 
        return sponsored;
    
    public void setSponsored(String sponsored) 
        this.sponsored = sponsored;
    
    public String getExpired() 
        return expired;
    
    public void setExpired(String expired) 
        this.expired = expired;
    
    public String getFormattedLocationFull() 
        return formattedLocationFull;
    
    public void setFormattedLocationFull(String formattedLocationFull) 
        this.formattedLocationFull = formattedLocationFull;
    
    public String getFormattedRelativeTime() 
        return formattedRelativeTime;
    
    public void setFormattedRelativeTime(String formattedRelativeTime) 
        this.formattedRelativeTime = formattedRelativeTime;
    
    public String getDetails() 
        String result = jobtitle + ": " + company + "\n" + city + "-" + state
                + "\n" + country + "\n" + formattedLocation +"\n" + source+"\n"+date+
                "\n"+snippet+"\n"+url+"\n"+onmousedown+"\n"+lattitude+"\n"+longitude+"\n"
                +jobkey+"\n"+sponsored+"\n"+expired+"\n"+formattedLocationFull+"\n"+formattedRelativeTime;
        return result;
    

【问题讨论】:

代码太多了。制作最小的可重现示例。从固定字符串中获取数据并将其传递给 SQL @sixtytrees 感谢您的回复。您能否检查 PostDatabase 类和 MarkAsFab 类和 DBHelper 类,让我知道我是否做得对。我仍然没有在数据库中保存任何数据。 【参考方案1】:

我刚刚更新了我的代码,它对我来说工作正常。我把它贴在这里,以便任何人都可以在需要时使用。

MarkFav.java

public class MarkAsFav extends Activity 

    private DBHelper mydb;

    TextView header;

    int id_To_Update = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mark_fav_layout);
        header = (TextView) findViewById(R.id.editTextName);

        mydb = new DBHelper(this);
        mydb.getWritableDatabase();

        Bundle extras = getIntent().getExtras();
        if (extras != null) 
            int value = extras.getInt("id");

            if (value > 0) 
                //means this is the view part not the add contact part.
              /*  Cursor rs = mydb.getData(value);
                id_To_Update = value;
                rs.moveToFirst();

                String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));

                if (!rs.isClosed()) 
                    rs.close();
                
                Button b = (Button) findViewById(R.id.button1);
                b.setVisibility(View.INVISIBLE);

                header.setText( nam);
                header.setFocusable(false);
                header.setClickable(false);*/

            
        
    


    public void run(View view) 
        Bundle extras = getIntent().getExtras();
        if (extras != null) 

            int value     =   extras.getInt("id");
            String headerValue = header.getText().toString();
            String value1 =   extras.getString("title");
            String value2 =   extras.getString("company");
            String value3 =   extras.getString("city");
            String value4 =   extras.getString("state");
            String value5 =   extras.getString("country");
            String value6 =   extras.getString("formattedLocation");
            String value7 =   extras.getString("source");
            String value8 =   extras.getString("date");
            String value9 =   extras.getString("snippet");
            String value10=   extras.getString("url");
            String value11=   extras.getString("onmousedown");
            String value12=   extras.getString("lattitude");
            String value13=   extras.getString("longitude");
            String value14=   extras.getString("jobkey");
            String value15=   extras.getString("sponsored");
            String value16=   extras.getString("expired");
            String value17=   extras.getString("formattedLocationFull");
            String value18=   extras.getString("formattedRelativeTime");


            Log.e("ERROR", "Inside run and checking Value and val");
            if (value > 0) 
                /*if (mydb.updateContact(id_To_Update, header.getText().toString())) 
                    Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(intent);
                    Log.e("ERROR", "update error");
                 else 
                    Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();
                
            
            else */
                if (mydb.insertContact(headerValue, value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,value11,value12,value13,value14,value15,value16,value17,value18))
                    Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show();
                    Log.e("ERROR", "insert contact errors");
                 else 
                    Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show();
                
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);
            
        
    

DBHelper.java

public class DBHelper extends SQLiteOpenHelper 

    public static final String DATABASE_NAME = "MyDB.db";
    public static final String JOBS_TABLE_NAME = "favourites";
    public static final String JOBS_COLUMN_ID = "id";
    public static final String JOBS_COLUMN_NAME = "name";
    public static final String JOBS_COLUMN_HEADER="header";
    public static final String JOBS_COLUMN_COMPANY="company";
    public static final String JOBS_COLUMN_CITY="city";
    public static final String JOBS_COLUMN_STATE="state";
    public static final String JOBS_COLUMN_COUNTRY="country";
    public static final String JOBS_COLUMN_FORMATEDLOCATION="formatedLocation";
    public static final String JOBS_COLUMN_SOURCE="source";
    public static final String JOBS_COLUMN_DATE="date";
    public static final String JOBS_COLUMN_SNIPPET="snippet";
    public static final String JOBS_COLUMN_URL="url";
    public static final String JOBS_COLUMN_ONMOUSEDOWN="onmousedown";
    public static final String JOBS_COLUMN_LATTITUDE="lattitude";
    public static final String JOBS_COLUMN_LONGITUDE="longitude";
    public static final String JOBS_COLUMN_JOBKEY="jobkey";
    public static final String JOBS_COLUMN_SPONSORED="sponsored";
    public static final String JOBS_COLUMN_EXPIRED="expired";
    public static final String JOBS_COLUMN_FORMATTEDLOCATIONFULL="formattedLocationFull";
    public static final String JOBS_COLUMN_FORMATTEDRELATIVETIME="formattedRelativeTime";
    private HashMap hp;


    public DBHelper(Context context)
    
        super(context, DATABASE_NAME , null, 1);
    

    @Override
   /* public void onCreate(SQLiteDatabase db) 
        // TODO Auto-generated method stub
        db.execSQL(
                "create table" + JOBS_TABLE_NAME  +
                        "("+JOBS_COLUMN_ID+" integer primary key autoincrement, "+JOBS_COLUMN_HEADER+" text, "+JOBS_COLUMN_NAME+" text,"+JOBS_COLUMN_COMPANY+" text, "+JOBS_COLUMN_CITY+" text, "+JOBS_COLUMN_STATE+" text, "+JOBS_COLUMN_COUNTRY+" text,"+JOBS_COLUMN_FORMATEDLOCATION+" text,"+JOBS_COLUMN_SOURCE+" text,"+JOBS_COLUMN_DATE+" text,"+JOBS_COLUMN_SNIPPET+" text,"+JOBS_COLUMN_COMPANY+" text,"+JOBS_COLUMN_URL+"text,"+JOBS_COLUMN_ONMOUSEDOWN+" text,"+JOBS_COLUMN_LATTITUDE+" text,"+JOBS_COLUMN_LONGITUDE+"text,"+JOBS_COLUMN_JOBKEY+" text,"+JOBS_COLUMN_SPONSORED+" text,"+JOBS_COLUMN_EXPIRED+" text,"+JOBS_COLUMN_FORMATTEDLOCATIONFULL+" text,"+JOBS_COLUMN_FORMATTEDRELATIVETIME+" text)"
        );*/
    public void onCreate(SQLiteDatabase db) 
        // TODO Auto-generated method stub
        db.execSQL(
                "create table" + JOBS_TABLE_NAME  +
                        "("+JOBS_COLUMN_ID+" integer primary key autoincrement, "+JOBS_COLUMN_HEADER+" Text, "+JOBS_COLUMN_NAME+" Text,"+JOBS_COLUMN_COMPANY+" Text, "+JOBS_COLUMN_CITY+" Text, "+JOBS_COLUMN_STATE+" Text, "+JOBS_COLUMN_COUNTRY+" Text,"+JOBS_COLUMN_FORMATEDLOCATION+" Text,"+JOBS_COLUMN_SOURCE+" Text,"+JOBS_COLUMN_DATE+" Text,"+JOBS_COLUMN_SNIPPET+" Text,"+JOBS_COLUMN_COMPANY+" Text,"+JOBS_COLUMN_URL+"Text,"+JOBS_COLUMN_ONMOUSEDOWN+" Text,"+JOBS_COLUMN_LATTITUDE+" Text,"+JOBS_COLUMN_LONGITUDE+"Text,"+JOBS_COLUMN_JOBKEY+" Text,"+JOBS_COLUMN_SPONSORED+" Text,"+JOBS_COLUMN_EXPIRED+" Text,"+JOBS_COLUMN_FORMATTEDLOCATIONFULL+" Text,"+JOBS_COLUMN_FORMATTEDRELATIVETIME+" Text)"
        );
    

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS favourites");
        onCreate(db);
    

    public boolean insertContact(String header, String name,String company,String city,String state,String country,String formattedLocation,String source,String date,String snippet,String url,String onmousedown,String lattitude,String longitude,String jobkey,String sponsored,String expired, String formattedLocationFull,String formattedRelativeTime)
    
        SQLiteDatabase db =  this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        //contentValues.put("id",id);
        contentValues.put(JOBS_COLUMN_HEADER,header);
        contentValues.put(JOBS_COLUMN_NAME, name);
        contentValues.put(JOBS_COLUMN_COMPANY, company);
        contentValues.put(JOBS_COLUMN_CITY, city);
        contentValues.put(JOBS_COLUMN_STATE, state);
        contentValues.put(JOBS_COLUMN_COUNTRY, country);
        contentValues.put(JOBS_COLUMN_FORMATEDLOCATION, formattedLocation);
        contentValues.put(JOBS_COLUMN_SOURCE, source);
        contentValues.put(JOBS_COLUMN_DATE, date);
        contentValues.put(JOBS_COLUMN_SNIPPET, snippet);
        contentValues.put(JOBS_COLUMN_URL, url);
        contentValues.put(JOBS_COLUMN_ONMOUSEDOWN, onmousedown);
        contentValues.put(JOBS_COLUMN_LATTITUDE, lattitude);
        contentValues.put(JOBS_COLUMN_LONGITUDE, longitude);
        contentValues.put(JOBS_COLUMN_JOBKEY, jobkey);
        contentValues.put(JOBS_COLUMN_SPONSORED, sponsored);
        contentValues.put(JOBS_COLUMN_EXPIRED, expired);
        contentValues.put(JOBS_COLUMN_FORMATTEDLOCATIONFULL, formattedLocationFull);
        contentValues.put(JOBS_COLUMN_FORMATTEDRELATIVETIME, formattedRelativeTime);

        db.insert("favourites", null, contentValues);
        return true;
    

    public Cursor getData(int id)
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from favourites where id="+id+"", null );
        return res;
    

   /* public int numberOfRows()
        SQLiteDatabase db = this.getReadableDatabase();
        int numRows = (int) DatabaseUtils.queryNumEntries(db, JOBS_TABLE_NAME);
        return numRows;
    */

    public boolean updateContact (Integer id, String name)
    
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", name);

        db.update("favourites", contentValues, "id = ? ", new String[]  Integer.toString(id)  );
        return true;
    

    public Integer deleteContact (Integer id)
    
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete("favourites",
                "id = ? ",
                new String[]  Integer.toString(id) );
    

    public ArrayList<String> getAllCotacts()
    
        ArrayList<String> array_list = new ArrayList<String>();

        //hp = new HashMap();
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from favourites", null );
        res.moveToFirst();

        while(res.isAfterLast() == false)
            array_list.add(res.getString(res.getColumnIndex(JOBS_COLUMN_NAME)));
            res.moveToNext();
        
        return array_list;
    

【讨论】:

以上是关于将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

通过 REST API 检索结果并将其显示在新活动的列表视图中(列表视图出现小问题)

将活动之间的数据从列表视图传递到另一个活动

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

如何遍历从 REST API 获得的响应对象并以角度 2 在视图中显示数据

如何从 REST API 传递类别属性值

创建后的 Django REST 可浏览 API 列表视图仅显示创建的实例