我想要一个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) 我有一个对象,我必须从中过滤某些属性,其中一些属性也可能是"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不是很有经验,但我想这可以更容易解决,对吧?