简体   繁体   English

如何根据用户点击次数检索数据库值

[英]How to retrieve database values based on user clicks

I have made a database film app, which allows the user to search for a film. 我制作了一个数据库电影应用程序,该应用程序允许用户搜索电影。 The results will then display in a ScrollView. 结果将显示在ScrollView中。 Once the search results are returned, I want the user to be able to click on a film, which will lead to a new activity with the full details of the film. 返回搜索结果后,我希望用户能够单击电影,这将导致具有该电影全部详细信息的新活动。 How would I go about doing this? 我将如何去做呢?

The clicks will all lead to one activity, but I need different details to display depending on the film clicked. 这些点击都将导致一个活动,但是我需要根据所单击的影片显示不同的详细信息。 I have 20 films in my database in total. 我的数据库中总共有20部电影。

Search function on MainActivity: MainActivity上的搜索功能:

    public void search(View v){
    EditText search = (EditText)findViewById(R.id.edtSearch);
    String searchresult = "%" + search.getText().toString() + "%";
    db = new DbHelper(this).getReadableDatabase();
    String[] tblColumns = {"*"};
    String where = "film LIKE ? OR actor LIKE ? OR actor2 LIKE ? OR director LIKE ?";
    String[] args = {searchresult, searchresult, searchresult, searchresult};
    Cursor results = db.query("FILMTABLE", tblColumns, where, args, null, null, null);
    film(results);
}

public void film (Cursor c){

    c.moveToFirst();
    int titleint = c.getColumnIndex("film");
    int id= c.getColumnIndex("id");
    String title = c.getString(titleint);
    int filmID = c.getInt(id);

    TextView txt = new TextView(getApplicationContext());
    txt.setId(filmID);
    txt.setText(title);
    txt.setTextColor(Color.BLACK);
    txt.setTextSize(15);
    txt.setClickable(true);
    txt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(), MainActivity4.class);
            startActivity(intent);
        }
    });

    ScrollView scrollView = (ScrollView)findViewById(R.id.scrolLView);
    scrollView.addView(txt);
}

DatabaseHelper: DatabaseHelper:

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

public class DbHelper extends SQLiteOpenHelper {

    private static final String ID = "id";
    private static final String FILM = "film";
    private static final String ACTOR = "actor";
    private static final String ACTOR2 = "actor2";
    private static final String DIRECTOR = "director";
    private static final String DESCRIPTION = "description";
    private static final String TABLE_NAME = "FILMTABLE";
    private static final String DATABASE_NAME = "filmdatabase3";
    private static final int DATABASE_VERSION = 1;
    private static final boolean FAVOURITE = false;


    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
                        ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        FILM + " TEXT NOT NULL, " +
                        ACTOR + " TEXT NOT NULL, " +
                        ACTOR2 + " TEXT NOT NULL, " +
                        DIRECTOR + " TEXT NOT NULL, " +
                        FAVOURITE + " BOOLEAN, " +
                        DESCRIPTION + " TEXT NOT NULL);"
        );

        Cursor countRows = db.rawQuery("SELECT count(*) FROM FILMTABLE", null);
        countRows.moveToFirst();
        int NumRows = countRows.getInt(0);
        countRows.close();

        if (NumRows == 0) {
            ContentValues values = new ContentValues();


            values.put("film", "Gone Girl");
            values.put("actor", "Ben Affleck");
            values.put("actor2", "Rosamund Pike");
            values.put("director", "David Fincher");
            values.put("description", "description");
            db.insert("FILMTABLE", null, values);
            values.clear();

            values.put("film", "The Hobbit");
            values.put("actor", "Martin Freeman");
            values.put("actor2", "Elijah Wood");
            values.put("director", "Peter Jackson");
            values.put("description", "description");
            db.insert("FILMTABLE", null, values);
            values.clear();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
        onCreate(db);
    }
}

When you start the detail activity, put the id of the film to the Intent you are creating. 当开始细节活动时,将影片的ID放入要创建的Intent中。

Intent intent = new Intent(getApplicationContext(), MainActivity4.class);
intent.putExtra("FILM_ID_KEY", getSelectedFilmId());
startActivity(intent);

Or make your film POJO parcelable and again put that in your intent via putExtra method. 或将电影POJO设置为可拆分 ,然后通过putExtra方法再次将其放入您的意图。

After that, in your MainActivity4 get these values in onCreate with getIntent method. 之后,在您的MainActivity4中,使用getIntent方法在onCreate中获取这些值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何根据用户在文本字段中输入的电子邮件从 Firebase 数据库中检索值? - How can I retrieve values from Firebase database based on email entered by user in text field? java-如何根据用户点击次数替换jPanel - java - how to replace a jPanel based on user clicks 我想根据卡片视图中实现的特定按钮点击从我的数据库中检索一组特定的问题 - I want to retrieve a specific set of questions from my database based on a particular button clicks implemented in card views 如何使用 swing GUI (Netbeans) 根据 Java 中的登录用户存储和检索数据库信息 - How to store and retrieve database information based on logged in user in Java, using swing GUI (Netbeans) 如何仅为特定用户检索firebase数据库? - How to retrieve firebase database for specific user only? 如何检索 Firebase 实时数据库中的值 - How to retrieve values in the firebase realtime database 如何根据游戏级别的用户点击次数更改数学测验难度? Android的 - How to change math quiz difficulty based on game level user clicks? Android 当用户单击卡片视图时,如何从Firebase实时数据库中删除显示在卡片视图上的特定记录。 - How to delete a specific record displayed on a cardview from Firebase Realtime Database when user clicks on a cardview. 如何根据指定的条件从数据库列表中检索项目 - How to retrieve items from a database list based on specified criteria 如何使用基于 jsontype 属性的 jOOQ 从数据库中检索数据 - How to retrieve data from database using jOOQ based on jsontype properties
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM