【问题标题】:Database query to display a message when there are no results数据库查询以在没有结果时显示消息
【发布时间】:2013-10-02 13:47:34
【问题描述】:

我使用 Eclipse 创建了一个不错的应用程序,它类似于字典应用程序 - 基本上是可搜索的术语列表。当用户搜索不存在的术语时,我想创建一个新活动。目前,当这种情况发生时,列表视图是空白的,我认为这不是很有帮助,所以我至少希望有一个弹出窗口或其他内容显示“没有这样的术语”或“请提交这个新术语”或一些东西而不是空白。

每次我寻找这个挑战的答案时,我都会被与数据库问题等相关的问题轰炸。

当没有找到/空/零结果时,我可以在下面的代码中添加条件吗?

public void search(View view) { 
  cursor = db.rawQuery(
      "SELECT _id, term, definition FROM term WHERE term LIKE ?", 
      new String[]{"%" + searchText.getText().toString() + "%"});

  adapter = new SimpleCursorAdapter(
      this, 
      R.layout.term_list_layout, 
      cursor, 
      new String[] {"term", "definition"}, 
      new int[] {R.id.term, R.id.definition});

  setListAdapter(adapter);
}

提前非常感谢!

【问题讨论】:

    标签: java android eclipse android-activity


    【解决方案1】:

    您需要在列表视图中使用setEmptyView(),在没有结果时显示您想要显示的任何内容

    编辑

    像这样检查光标

    if(cursor.moveToFirst()){
        //cursor is no empty, set up list
        adapter = new SimpleCursorAdapter(
      this, 
      R.layout.term_list_layout, 
      cursor, 
      new String[] {"term", "definition"}, 
      new int[] {R.id.term, R.id.definition});
    
      setListAdapter(adapter);
    }else{
        //cursor is empty start new activity
    }
    

    【讨论】:

    • 好的。这可能是一个很好的解决方案。但我想更进一步,在没有结果的情况下开始一项活动。我希望有一些方法可以做一个 if results = false -> start activity...
    • 然后在做任何事情之前检查并查看您的光标是否为空。如果它为空,则开始一个新活动,如果不是,则显示您的列表
    • 非常感谢。你给我指出了正确的方向。这是我的工作解决方案: if(cursor.getCount() == 0) *现在要弄清楚如何获取该搜索词并在新活动中使用它...
    【解决方案2】:

    如果我正确理解您的问题,您想为列表视图使用“空”视图。只要列表视图不包含任何条目,就会显示此视图。

    mMyListView.setEmptyView(findViewById(R.id.emptyView));
    

    您还可以通过指定正确的 ID(@android:id/empty)以 XML 格式设置视图

    <ListView android:id="@android:id/list"
           android:layout_width="match_parent"
           android:layout_height="match_parent"/>
    
    <TextView android:id="@android:id/empty"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:text="List is empty"
           android:gravity="center"/>
    

    【讨论】:

    • 是的,您对我的问题的理解非常接近。这可能是一个很好的解决方案。但我想更进一步,在没有结果的情况下开始一项活动。我希望有一些方法可以做这样的声明;如果结果 = false -> 开始活动...
    • 填充后检查您的适配器。如果它包含结果,则开始您的新活动
    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多