小编gor*_*nyj的帖子

显示ActionBarSherlock SearchView始终展开

我需要在ActionBar中显示SearchView总是展开和另外一个按钮,以便用户快速访问Search Activity中的搜索字符串.
我的活动有这个菜单布局:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/action_search"
        android:title="@string/action_search"
        android:icon="@drawable/ic_action_search"
        android:showAsAction="always"
        android:actionViewClass="com.actionbarsherlock.widget.SearchView"/>
    <item android:id="@+id/action_configure"
        android:title="@string/action_configure"
        android:icon="@android:drawable/ic_menu_preferences"
        android:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)

在Search活动类中,我按如下方式配置ActionBar:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.search, menu);
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
    searchView.setSubmitButtonEnabled(false);
return true;
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我这样做,searchView.setIconifiedByDefault(false);我会看到这张图片:
在此输入图像描述

您可以注意到没有第二个菜单项.在这里,如果我设置android:showAsAction ="always | collapseActionView",它默认会折叠,但我现在可以看到第二项:
在此输入图像描述
在上图中我已按下搜索图标

有两个问题我无法弄清楚:

  1. 如何始终显示两个元素:扩展搜索视图和配置操作图标?
  2. 如何摆脱这个丑陋的第二个搜索图标?

android actionbarsherlock searchview

7
推荐指数
1
解决办法
7227
查看次数

ActionBarSherlock SearchView强制转换

当我尝试在文档中配置SearchView时,如果使用ActionBarSherlock,我会收到此错误:

FATAL EXCEPTION: main
java.lang.ClassCastException: android.widget.SearchView cannot be cast to com.actionbarsherlock.widget.SearchView
    at MY_PACKAGE.ACTIVITY.onCreateOptionsMenu(MenuDrawerBase.java:181)
    at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:45)
    at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559)
    at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:60)
    at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:165)
    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:393)
    at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:747)
    at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2913)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4745)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我的代码与示例完全相同:

import com.actionbarsherlock.view.*;
import com.actionbarsherlock.widget.SearchView;
......
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.main, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true);
        searchView.setSubmitButtonEnabled(true);
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

没有找到这方面的描述所以问你:这是什么?
顺便说一下,如果我使用 …

android actionbarsherlock searchview

6
推荐指数
1
解决办法
3758
查看次数

xpath表达式上的Postgresql索引没有加速

我们正在尝试在Postgresql中创建OEBS模拟功能.假设我们有一个表单构造函数,需要将表单结果存储在数据库中(例如电子邮件正文).在Oracle中,您可以使用包含150~列的表(以及存储在其他位置的某些映射)来将每个字段存储在单独的列中.但与Oracle相反,我们希望将所有表单存储在postgresql xml字段中.树的例子是

 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
   <object_id>2</object_id>  
   <pack_form_id>23</pack_form_id>  
   <prod_form_id>34</prod_form_id>
 </row>
Run Code Online (Sandbox Code Playgroud)

我们想搜索这个字段.测试表包含400k行,以下选择在90秒内执行:

select * 
from params 
where (xpath('//prod_form_id/text()'::text, xmlvalue))[1]::text::int=34
Run Code Online (Sandbox Code Playgroud)

所以我创建了这个索引:

create index prod_form_idx 
ON params using btree(
   ((xpath('//prod_form_id/text()'::text, xmlvalue))[1]::text::int)
);
Run Code Online (Sandbox Code Playgroud)

它没有任何区别.执行仍然是90秒.EXPLAIN计划显示:

Bitmap Heap Scan on params  (cost=40.29..6366.44 rows=2063 width=292)
  Recheck Cond: ((((xpath('//prod_form_id/text()'::text, xmlvalue, '{}'::text[]))[1])::text)::integer = 34)
  ->  Bitmap Index Scan on prod_form_idx  (cost=0.00..39.78 rows=2063 width=0)
        Index Cond: ((((xpath('//prod_form_id/text()'::text, xmlvalue, '{}'::text[]))[1])::text)::integer = 34)
Run Code Online (Sandbox Code Playgroud)

我不是伟大的计划解释器所以我想这意味着正在使用索引.问题是:速度在哪里?我能做些什么来优化这种查询?

postgresql indexing optimization xpath

4
推荐指数
1
解决办法
2963
查看次数