小编Kon*_*rer的帖子

使用CAB在自定义ListView中进行多项选择

看完并试着好几天后,我放弃了并寻求帮助.

<edit>我正在使用ActionBarSherlock.</ edit>

我想要实现的目标: 一个ListView,每行有一个自定义布局,用户可以在其中选择多个列表项.选定的列表项应具有不同的背景颜色.如果至少选择了一个项目,则应显示上下文操作栏(CAB).它应该或多或少看起来像GMail应用程序中的多个电子邮件选择.唯一的区别是,在gmail应用程序中,通过单击行的复选框来完成选择,而我不希望有一个复选框,但无论用户单击的位置,都应该选择一行. GMail应用程序中的多个选择

我尝试过:本教程中,使用Checkable行布局和一些逻辑来在切换检查状态时更改背景颜色,我得到了一切正常工作,除了我无法在ListView上注册像OnItemClickListener这样的点击监听器来显示CAB .既没有为每一行View提供点击监听器也有帮助,因为这阻止了更改所选项目的背景颜色.我也尝试将MultiChoiceModeListener添加到ListView中

    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { //.. });
Run Code Online (Sandbox Code Playgroud)

结果相同,没有背景颜色变化.

我在寻找:提示或教程或示例代码如何做到这一点.如果您需要一些代码片段来提供帮助,请告诉我们.

android android-listview

29
推荐指数
3
解决办法
3万
查看次数

Android应用的缓存策略

我正在考虑如何在我的Android应用程序中理想地实现缓存层.

目前我有通用的活动,显示来自远程服务器的数据.数据由DTO TemplateInstance表示.每个TemplateInstance都有一个包含组件的Map,每个组件都可以有子组件.组件本身可以是Text(String),Image(ByteArray)或Time(或者通过子类组件的任何内容).

目前,每次启动Activity时,我的应用程序都会从​​服务器加载TemplateInstance.

我现在想在应用程序中实现缓存层,以便

  1. 显示数据的时间减少到最低限度,
  2. 在服务器上更改数据时刷新数据.

我的策略如下:

  • 已启动的Activity通过ID从本地存储加载TemplateInstance(如果存在)
  • 如果服务器上的TemplateInstance已更改(使用数据库中的版本字段),UpdateService将在后台检查
  • 如果服务器版本大于本地版本或没有本地TemplateInstance,则从服务器检索数据,更新本地存储并更新视图

我已经使用db4o成功实现了这一点.此解决方案只有两个问题:

  • db4o在GPL下(我不能使用它)
  • 当我加载具有许多图像的TemplateInstances(查询为4秒)时,db4o非常慢

现在我正在寻找db4o的最佳替代品.到目前为止,我的想法是:

  • 由于数据的结构,SQLite不适用
  • 我不需要数据库功能 - 通过ID检索对象就足够了
  • 将对象保存在内存中会明显加快
  • 应用程序退出时,应将内存状态保存到磁盘,因此可以在启动时重新实例化对象

您认为最佳解决方案是什么?

我对此的研究将我带到了EHCacheJCS,这是我从未使用过的.您认为它们是否合适,也适用于Android手机上的资源?或者你有其他建议吗?

android caching

10
推荐指数
1
解决办法
4839
查看次数

ActionBarSherlock:如何访问主页按钮视图?

我正在使用ActionBarSherlock,并希望获得Google地图所知的主页按钮的类似功能.

主页按钮就像谷歌地图一样

使用以下代码按主页按钮时,我已设法打开QuickAction(http://code.google.com/p/simple-quickactions/):

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
       View anchor = findViewById(R.id.text); // how do I get the home button view here?
       quickAction.show(anchor);
       return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但是我使用活动的简单TextView作为锚点(R.id.text).如何从ActionBar中检索主页按钮视图?

哦,findViewById(android.R.id.home)或者findViewById(item.getItemId())两者都返回null.

android actionbarsherlock android-actionbar

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

Hibernate 3.6:SQL方言中的registerFunction不起作用

我放弃并问社区......

在我的项目中,我使用的是Hibernate 3.6.4.Final和自定义sql方言:

public class ServiceAppMySQL5InnoDBDialect extends MySQL5InnoDBDialect {

    public ServiceAppMySQL5InnoDBDialect() {
        super();
        registerFunction("bitwise_and", new SQLFunctionTemplate(StandardBasicTypes.INTEGER, "(?1 & ?2)"));
        registerFunction("hasflags", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN, "?1 & ?2 = ?2"));
    }

}
Run Code Online (Sandbox Code Playgroud)

hasflags在HQL查询中使用该方法失败.这是查询:

Query q = em
        .createQuery(
            "SELECT o FROM "
            + entityClass.getName()
            + " o WHERE hasflags(o.status, :status) AND o.email = :email")
        .setParameter("email", username)
        .setParameter("status", status.getBitmask());
Run Code Online (Sandbox Code Playgroud)

错误:

Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: ( near line 1, column 50 [SELECT o FROM tv.px.domain.Owner o WHERE hasflags(o.status, :status) AND o.email = …
Run Code Online (Sandbox Code Playgroud)

hibernate hql dialect

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

HashMap反序列化

我有一个服务器/客户端应用程序,我通过Hessian/hessdroid从服务器检索数据.HashMaps包含其他HashMaps和存储在字节数组中的图像,数据非常复杂.我可以完美地显示数据.

为了不总是查询服务器,我使用数据结构作为缓存.关闭应用程序时,我使用ObjectOutputStream将此数据对象保存到SD卡.当我重新启动它时,我用ObjectInputStream将它读回内存.

我只是在从SD卡读取数据后才遇到应用程序问题.LogCat给我以下输出(100次):

DEBUG/dalvikvm(4150): GetFieldID: unable to find field Ljava/util/HashMap;.loadFactor:F
Run Code Online (Sandbox Code Playgroud)

这在其他消息之间:

INFO/dalvikvm-heap(4150): Grow heap (frag case) to 10.775MB for 281173-byte allocation
Run Code Online (Sandbox Code Playgroud)

当堆增长~17 MB时,应用程序崩溃.

我阅读了几个关于HashMap序列化的线程,并且在架构之间进行序列化时似乎存在一个错误,但对我来说,通过Hessian进行的数据传输工作正常,并且只有在从磁盘读取HashMaps时我才会遇到所描述的问题.

有任何想法吗?

serialization android hashmap

5
推荐指数
1
解决办法
2959
查看次数

方向从双窗格更改为单窗格

横向和纵向的不同布局之间的方向变化似乎很容易,但是我无法找到解决当前情况的方法.

我想在横向模式下使用带有两个片段的双窗格布局

水库\布局,土地\ dashboard_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <fragment class="xxx.DashboardFragment"
            android:id="@+id/master_frag"
            android:layout_width="@dimen/timeline_size"
            android:layout_height="match_parent"/>

    <fragment class="xxx.TaskInstanceFragment"
            android:id="@+id/details_frag"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

和纵向模式下的单窗格布局

水库\布局\ dashboard_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment class="xxx.DashboardFragment"
        android:id="@+id/master_frag"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我想要注意DashboardFragment包含一个ViewPager.不知道它是否重要.

现在,当我将方向从横向(双)更改为纵向(单个)时,应用程序崩溃,因为它想要更新details_frag.当我以纵向开始活动时,它可以工作,只有从横向切换到肖像会产生问题.

在活动中有以下代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dashboard_activity);

    Fragment frag = getSupportFragmentManager().findFragmentById(R.id.details_frag);
    mDualFragments = frag != null;

    /* .. */
}
Run Code Online (Sandbox Code Playgroud)

现在,FragmentManager当我切换到纵向模式时,仍然会找到细节片段,因此mDualFragments仍然是真的但应该是假的,这导致稍后调用细节片段中的方法.

那么,这是为什么呢?:)

此致,Konsumierer

android android-fragments android-orientation

2
推荐指数
1
解决办法
2389
查看次数