小编fis*_*_zh的帖子

使用AbstractMainActivity的Android导航抽屉(调用活动)

我想要一个AbstractMainActivity来创建导航抽屉.在那里我还应该处理菜单项的点击,然后调用新的活动.在那些活动中,我想再次使用相同的导航抽屉.

我将使用AbstractMainActivity扩展Subclasses并以不同的方式从每个子类调用getLayoutResourceID(如下所示:android如何创建自己的Activity并扩展它?).

问题是,现在在我想构建导航抽屉的AbstractMainActivity中,我没有任何访问导航抽屉布局(xml)元素的权限,因为我当然希望为子类提供不同的基本布局.

我是否需要在所有子类布局文件中"包含布局"?但这不起作用,如果我想在导航抽屉中使用活动而不是片段,我该怎么办?

public abstract class MainActivity extends Activity {

private String[] menuItems;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);

    setContentView(getLayoutResourceId());

    menuItems = getResources().getStringArray(R.array.menu_items);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, menuItems));
    // Set the list's click listener
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

}


protected abstract int getLayoutResourceId();

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer

6
推荐指数
2
解决办法
2万
查看次数

findBy多个属性(findAllWhere)

我有一个对象,我必须从中过滤某些属性,其中一些属性也可能是"null".我有一个Filter对象和一个Product对象.

在Filter对象中,我有一些反映Product对象的属性,可以填写或留空.这里有一个关于类的缩写视图.

Product: String name, Boolean isEmpty, ...., belongsTo [Producer, Distributor]...


Filter: Boolean isEmpty, ... belongsTo [Producer, Distributor]...
Run Code Online (Sandbox Code Playgroud)

使用此过滤器,我可以搜索具有某些属性的所有产品(空,生产者,分销商).

我有一个导出功能,我可以选择过滤器,它根据产品的选择输出信息.

由于所有这些属性都可以为null,但也包含一个值,我首先想到构造一个自己的搜索查询(组合字符串等)来构造一个SQL字符串,然后使用Product.findAll(string_query,string_params).但由于这是相当繁琐的,我现在把它改成了这样的东西:

if(filter.producer)
    prods = Product.findAllWhere(producer:filter.producer)
if(filter.distributor)
    prods =  prods.findAll {it.distributor == filter.distributor}
if(filter.isEmpty!=null) //as it could be NULL but also false/true
    prods =  prods.findAll {it.isEmpty == filter.isEmpty}
Run Code Online (Sandbox Code Playgroud)

但是,如果要过滤10-15个属性,这将成为一项相当大的任务.我对Grails或Groovy不是很有经验,但我想这可以更容易解决,对吧?

grails multiple-columns findby

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