下面是一个带有ListView的代码片段.我添加了一个emptyView和一个headerView.添加headerView会导致onItemClick中的位置增加1.
因此,如果没有headerView,第一个列表元素将具有位置0,而headerView将第一个列表元素的位置为1!
这会导致我的适配器出错,例如在调用getItem()和使用其他方法时,请参见下文.奇怪的是:在适配器的getView()方法中,即使添加了headerView,也要求第一个列表元素的位置为0!
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ListView list = (ListView) viewSwitcher.findViewById(R.id.list);
View emptyView = viewSwitcher.findViewById(R.id.empty);
list.setEmptyView(emptyView);
View sectionHeading = inflater.inflate(R.layout.heading, list, false);
TextView sectionHeadingTextView = (TextView) sectionHeading.findViewById(R.id.headingText);
sectionHeadingTextView.setText(headerText);
list.addHeaderView(sectionHeading);
list.setAdapter(listAdapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listAdapter.getItem(position);
//Do something with it
}
});
}
Run Code Online (Sandbox Code Playgroud)
一些适配器方法:
@Override
public int getViewTypeCount() {
return TYPE_COUNT;
}
@Override
public int getItemViewType(int position) {
return (position < items.size()) ? ITEM_NORMAL …Run Code Online (Sandbox Code Playgroud) 我使用多个SharedPreferences在我的应用程序中存储数据.许多活动都使用了一些偏好.
我知道SharedPreferences在内部由地图支持,用于快速读取访问,并在设置更改时写入SD卡.
我想知道如果很多活动访问共享首选项哪种方式更好:
如果我使用1.解决方案是否有每个活动的共享首选项对象?当活动被销毁时,共享首选项的内部地图是否会被销毁?
如果我使用2.解决方案只有一个实例,虽然我在每个活动中调用getSharedPreferences?只要应用程序还活着,内部映射是否会在内存中?
希望有人知道Android如何在内部处理它.
我们假设我有以下对象:
public class MyOwnList {
@DatabaseField(id= true)
protected int id;
@ForeignCollectionField(eager = false)
protected Collection<Item> items;
}
Run Code Online (Sandbox Code Playgroud)
如items标记为惰性,如果我从数据库加载列表对象,则不会加载它.这正是我想要的!
问题是每次我访问时items,ORMLite都会进行sql查询以获取集合.只有在激活ORMLite的日志记录后才发现它...
为什么这样做?有什么好理由吗?
有什么方法可以延迟加载集合,但只有一次,而不是每次我访问集合?渴望和懒惰之间有什么关系?