热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Ihavemadeadatabasefilmapp,whichallowstheusertosearchforafilm.Theresultswillthend

I have made a database film app, which allows the user to search for a film. The results will then display in a 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?

我制作了一个数据库电影应用程序,允许用户搜索电影。然后,结果将显示在ScrollView中。一旦返回搜索结果,我希望用户能够点击一部电影,这将导致一个新的活动,其中包含电影的全部细节。我该怎么做呢?

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:

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);
    }
}

1 个解决方案

#1


0  

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中获取这些值。


推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
手机用户2502900835
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有