应用程序将不同的请求发送到数据库(SQL),具体取决于单击的按钮

时间:2013-02-28 03:59:52

标签: android sql methods cursor adapter

我仍然是Android开发的初学者,并会尝试使用我脑海中的模式尽可能清晰地提出问题。

此应用程序的目的:
- 我希望用户可以在几个按钮之间进行选择,当点击其中任何一个按钮时,它会根据按钮打开包含不同内容的列表视图。 例如:如果单击“Category_1”按钮,则只有具有适合ID的元素才会出现在列表视图中。

到目前为止,我有:
- 定义了我的“处理程序”类(扩展了SQLiteOpenHelper):DB的名称/路径,CRUD的定义,.getReadableDatabase等。
- 为我的表定义一个类,在我的例子中“Restaurants.java”,带有getter / setter和构造函数。 - 使用我的按钮的空侦听器定义了我的MainActivity - 定义了我的“DatabaseAdapter.java”,我想在其中定义将与数据库通信的方法/ sql请求,并从中获取我想要的信息。
- 定义了我的ListViewActivity,目前还没有显示任何内容。

这是一个关于如何使其尝试优化我的应用程序的想法的模式:
Schema

总结一下:
  - 我希望每个按钮都有一个监听器,将变量设置为某个值(例如:“如果单击1,则将A的值设置为1”)并打开ListViewActivity。   - 将在“... Adapter.java”中定义一个方法,向数据库发送请求并将之前定义的变量A作为输入。   - 然后,当单击按钮时,ListViewActivity将打开并从“..Adapter.java”调用方法,最后显示结果。

所以,这是我的问题:
  - 首先,设计是否经过优化以使我的应用程序能够快速运行?我认为它应该是因为所有按钮只打开一个活动,并且只为所有按钮定义了一种方法   - 我很难在“... Adapter.java”中定义方法,它将从我的ListViewAcitivity中调用。输入应该是单击按钮时获得的变量,但我真的不知道如何在一个活动中获取变量,打开第二个活动,通过在第三个活动中使用变量显示结果......:s <登记/> 当我们单击一个按钮并在另一个类中使用此变量作为方法的输入时,将变量设置为某个值是否正常?

public findNameInTable(int A){  
string sql = " select NAME from MY_TABLE where CAT1 = " + A;  
c = database.rawQuery(sql, null); }  

提前感谢任何可以帮助我实现申请的指示,建议或链接,对不起如果有些问题真的听起来像新手,我就开始了!
祝你有个美好的一天!

1 个答案:

答案 0 :(得分:1)

第1部分:我发现将变量传递给其他活动的最佳方法是使用putExtra(String, variable);。假设您在按下按钮时更改变量名称,则可以调用:

YourNewActivityClassName var = new YourNewActivityClassName();
Intent i = new Intent(context, YourNewActivityClassName.class);
i.putExtra("name", name);
startActivity(i);

然后在刚刚创建的活动中,您可以在onCreate方法中调用它:

Intent i = getIntent();
final String name = i.getStringExtra("name");

当然这是假设在调用putExtra之前将变量定义为String。

如果你想使用其他变量类型,你可以调用不同的get *** Extra命令,如getIntExtra(int, defaultval),但putExtra仍将用于发送它。

第2部分:为了调用在按钮点击中分配变量的方法,我发现最好的方法是使用“持有者类”这个持有者可以被定义为最终,按钮按下指定其中一个插槽的价值。这是我对整数的持有者:

public class holder {
    int to;

    public void setTo(int to){
        this.to = to;
    }
    public int getTo(){
        return to;
    }
}

我在创建final holder hold = new holder();时将我的类实例化为final 然后在列表单击侦听器中调用我的hold.setTo(int);。当我想获取数据时,我只需调用hold.getTo();即可获得整数。

下面是一篇类似的帖子:Pass value outside of public void onClick

希望这有帮助! 麦克