- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 SimpleCursorTreeAdapter 用于 ExpandableListview。我从 android 示例中得到了示例效果很好。
我的两个光标投影是这样的
private static final String[] PRIMARY_PROJECTION = new String[] {
CategoryPrimary.Columns._ID, CategoryPrimary.Columns.VALUE,
CategoryPrimary.Columns.KEY };
和
private static final String[] SUBCATEGORY_PROJECTION = new String[] {
CategorySub.Columns._ID, CategorySub.Columns.VALUE,
CategorySub.Columns.KEY, CategorySub.Columns.STATUS };
我像这样在我的 SimpleCursorAdapter 中传递这些值。
mAdapter = new MyExpandableListAdapter(
mActivity,
R.layout.category_group,
R.layout.category_items,
new String[] { CategoryPrimary.Columns.VALUE }, // Name for
// group layouts
new int[] { R.id.lblListHeader },
new String[] { CategorySub.Columns.VALUE }, // Number for child
// layouts
new int[] { R.id.lblListItem });
我的问题是,当我单击 edxpandablelistview 的子项时,我还需要 CategoryPrimary.Columns._ID 和 CategorySub.Columns._ID我可以简单地做的就是在我的布局中放置一个不可见的 TextView
R.layout.category_group,
R.layout.category_items,
并将数据绑定(bind)到其中。但是我不想绑定(bind)我的数据,还有其他方法吗?
我的完整类(class)如下。----------------------
public class CategoryFragment extends Fragment implements OnGroupClickListener,
OnGroupExpandListener, OnGroupCollapseListener, OnChildClickListener {
private static final String[] PRIMARY_PROJECTION = new String[] {
CategoryPrimary.Columns._ID, CategoryPrimary.Columns.VALUE,
CategoryPrimary.Columns.KEY };
// private static final int GROUP_ID_COLUMN_INDEX = 0;
private static final String[] SUBCATEGORY_PROJECTION = new String[] {
CategorySub.Columns._ID, CategorySub.Columns.VALUE,
CategorySub.Columns.KEY, CategorySub.Columns.STATUS };
private static final int TOKEN_GROUP = 0;
private static final int TOKEN_CHILD = 1;
private QueryHandler mQueryHandler;
private CursorTreeAdapter mAdapter;
private ExpandableListView expandableListView;
private SocialEyePlusActivity mActivity;
DealFragment dealFragment;
private static final class QueryHandler extends AsyncQueryHandler {
private CursorTreeAdapter mAdapter;
public QueryHandler(Context context, CursorTreeAdapter adapter) {
super(context.getContentResolver());
this.mAdapter = adapter;
}
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
switch (token) {
case TOKEN_GROUP:
mAdapter.setGroupCursor(cursor);
break;
case TOKEN_CHILD:
int groupPosition = (Integer) cookie;
mAdapter.setChildrenCursor(groupPosition, cursor);
break;
}
}
}
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
public MyExpandableListAdapter(Context context, int groupLayout,
int childLayout, String[] groupFrom, int[] groupTo,
String[] childrenFrom, int[] childrenTo) {
super(context, null, groupLayout, groupFrom, groupTo, childLayout,
childrenFrom, childrenTo);
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
String primaryValue = groupCursor.getString(groupCursor
.getColumnIndex(CategoryPrimary.Columns.VALUE));
final String selection = CategorySub.Columns.PRIMARYCATEGORY
+ " ='" + primaryValue + "'";
mQueryHandler.startQuery(TOKEN_CHILD, groupCursor.getPosition(),
CategorySub.CONTENT_URI, SUBCATEGORY_PROJECTION, selection,
null, null);
return null;
}
@Override
protected void bindGroupView(View view, Context context, Cursor cursor,
boolean isExpanded) {
super.bindGroupView(view, context, cursor, isExpanded);
TextView lblListHeader = (TextView) view
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
if (cursor.getPosition() % 2 != 0) {
lblListHeader
.setBackgroundResource(R.drawable.group_normal_first);
} else {
lblListHeader
.setBackgroundResource(R.drawable.group_normal_second);
}
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView txtListChild = (TextView) super.getChildView(
groupPosition, childPosition, isLastChild, convertView,
parent);
if (groupPosition % 2 == 0) {
if (childPosition == 0) {
txtListChild
.setBackgroundResource(R.drawable.group_child_button_red);
} else {
txtListChild
.setBackgroundResource(R.drawable.group_childbutton);
}
} else {
if (childPosition == 0) {
txtListChild
.setBackgroundResource(R.drawable.group_child_button_blue);
} else {
txtListChild
.setBackgroundResource(R.drawable.group_childbutton);
}
}
return txtListChild;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dealFragment = (DealFragment)getParentFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_category, container,
false);
expandableListView = (ExpandableListView) view
.findViewById(R.id.category_listview);
expandableListView.setOnGroupClickListener(this);
expandableListView.setOnGroupExpandListener(this);
expandableListView.setOnGroupCollapseListener(this);
expandableListView.setOnChildClickListener(this);
mAdapter = new MyExpandableListAdapter(
mActivity,
R.layout.category_group,
R.layout.category_items,
new String[] { CategoryPrimary.Columns.VALUE }, // Name for
// group layouts
new int[] { R.id.lblListHeader },
new String[] { CategorySub.Columns.VALUE }, // Number for child
// layouts
new int[] { R.id.lblListItem });
expandableListView.setDividerHeight(0);
expandableListView.setAdapter(mAdapter);
mQueryHandler = new QueryHandler(mActivity, mAdapter);
mQueryHandler.startQuery(TOKEN_GROUP, null,
CategoryPrimary.CONTENT_URI, PRIMARY_PROJECTION, null, null,
null);
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (mActivity == null) {
mActivity = (SocialEyePlusActivity) activity;
}
}
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Log.d("OnCliekd is Clicked", ""+groupPosition);
Log.d("OnCliekd is Clicked", ""+childPosition);
DealSubCatgFragment dealsSubListFragment = DealSubCatgFragment.newInstance("1","109");
dealFragment.containerFragment.replaceFragment(dealsSubListFragment, true, true);
return false;
}
@Override
public void onGroupCollapse(int arg0) {
}
@Override
public void onGroupExpand(int arg0) {
}
@Override
public boolean onGroupClick(ExpandableListView arg0, View view, int arg2,
long arg3) {
return false;
}
}
最佳答案
找到解决方案了。我将键和 id 值设置为 TextView 中的标签`
@Override
protected void bindChildView(View view, Context context, Cursor cursor,
boolean isLastChild) {
super.bindChildView(view, context, cursor, isLastChild);
TextView txtListChild = (TextView) view
.findViewById(R.id.lblListItem);
txtListChild.setTag(""+cursor.getString(cursor.getColumnIndex(CategorySub.Columns.KEY)));
}`
并以与子元素相同的方式在 onGroupClicked 回调中获取标签值,并且工作正常
关于java - 在可扩展 ListView 中使用 SimpleCursorTreeAdapter 时获取光标值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115932/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!