Articles of android cursoradapter

如何管理删除CursorAdapter上的项目

我目前面临着一个愚蠢的问题。 我有一个自定义适配器的listview(扩展CursorAdapter)。 它显示具有不同按钮的自定义视图(共享,如删除)。 对于删除按钮,它有一个alertdialog来确认删除该项目。 当用户确认时,该项目将从数据库中删除。 一切正常,直到这里。 我的问题是,如何使用我的新数据集有效地更新我的列表视图? 非常感谢你的帮助。 码: public class CommentCursorAdapter extends CursorAdapter{ (…) @Override public void bindView(View view, Context arg1, Cursor cursor) { (…) holder.list_item_comment_discard_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final String _id = v.getTag().toString(); AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); builder.setTitle(“Delete”); builder.setMessage(“Do you want to delete “+_id); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() […]

如何从CursorAdapter覆盖getItemId(int pos)方法?

由于这里的另一个答案我得到了这个问题,但没有解释如何做我要问的问题如何在使用自定义适配器时获取onItemClick(ListView)中行的id? 在那个问题中接受的答案是我需要的,因为我也在制作我自己的自定义适配器(CursorAdapter),因此我会遇到同样的问题。 问题是我不知道如何实现这一目标。 我正在查看Doc,并且不确定如何从游标访问_id列。 由于Doc没有常量,我可以从中获取该信息。 任何帮助解决它将非常感激。 编辑:我不清楚我的问题是什么,但只是澄清,如标题,我如何覆盖我创建的CursorAdapter自定义类中的getItemId()方法?

BaseAdapter与CursorAdapter

我想知道何时使用每个适配器。 根据我的经验,这篇文章 BaseAdapters在我从API获取数据时非常有用,并且我将它存储在Collection对象中。 但是,CursorAdapter用于查询来自数据库,电话议程的内容……通常,内容也有内容提供者从中查询信息。 所以基本上BaseAdapter用于没有内容提供者访问它们的查询,因为在这种情况下,CursorAdapter将是最佳选择。 是对的吗?

创建自定义简单游标适配器

我想创建一个非常简单的游标自定义游标适配器,以方便在点击时更改行项目的颜色。 使用以下代码 private static int save = -1; public void onListItemClick(ListView parent, View v, int position, long id) { parent.getChildAt(position).setBackgroundColor(Color.BLUE); if (save != -1 && save != position){ parent.getChildAt(save).setBackgroundColor(Color.BLACK); } save = position; } 我从这个线程获得了代码https://stackoverflow.com/a/7649880/498449 我会使用一个简单的游标适配器并将代码放在onClick中,但由于ListFragment中的默认列表重用了视图,因此滚动多个视图时会显示为突出显示。 谈到IRC,有人建议我创建一个自定义游标适配器。 但是,我似乎无法find如何执行此操作的最佳实践,以及上述代码段适合的位置。可以非常感谢帮助。 public class AreaCursorAdapter extends CursorAdapter { private Context context; public AreaCursorAdapter(Context context, Cursor c) { super(context, c); […]

CursorAdapter中的checkbox

我读过这篇文章 但我无法解决我的问题。 我在listview中使用CursorAdapter。 我在列表的每个项目中都有一个checkbox。如果您选中了checkbox并向上和向下滚动。 该checkbox将被禁用。 我无法解决它。 请帮帮我。 @Override public void bindView(View view, Context context, final Cursor cursor) { TextView tv1 = (TextView)view.findViewById(R.id.txt_name); TextView tv2 = (TextView)view.findViewById(R.id.txt_numer); tv1.setText(cursor.getString(2)); tv2.setText(cursor.getString(3)); final int pos = cursor.getPosition(); final CheckBox repeatChkBx = (CheckBox)view.findViewById(R.id.favorite_check); String likes = cursor.getString(cursor.getColumnIndex(“like”)); if (likes.equals(“yes”)) { repeatChkBx.setChecked(true); } else { repeatChkBx.setChecked(false); } repeatChkBx.setOnClickListener(new OnClickListener() { @Override […]

使用CursorLoader和Custom CursorAdapter进行ListView过滤

我目前正在做一个涉及根据我当前位置显示附近位置列表的项目。 我不久前刚开始使用Android编程,所以在编码阶段我还在学习。 我搜遍了所有试图得到一些关于如何继续的线索。 阅读和尝试后我仍然被困住了。 我的工作代码目前包括 CursorLoader 自定义ResourceCursorAdapter,帮助填充ListView上的条目 问题 过滤ListView条目的“正确”方法是什么? 我看过Filter / Filterable接口上的post,但它似乎不适合我当前的设置? 我是否在Custom CursorAdapter中执行过滤? 执行过滤后,如何刷新ListView? 我是否调用getLoaderManager()。restartLoader(0,null,this)或adapter.notifyDataSetChanged()? 提前致谢。

维护ListView,其中每个List项具有一对多关系

我的应用程序的设置方式是我有一个由CursorLoader维护的ListView,由用户发布的post。 每个post都有与之关联的用户评论。 每个listitem底部都有一个自定义文本视图,可以滚动注释(使用向右或向左滑动)。 在每个自定义文本视图中,是与其特定post关联的注释列表。 它类似于Google+应用中的评论,但项目是可滚动的。 注释存储在与post不同的数据库表中。 我遇到的问题是,每次调用BindView时,我都在查询数据库并检索带有相关注释的游标并将其添加到自定义textview列表中。 查询每个项目的注释数据库表似乎效率很低。 所以我想知道是否有理想的方法来处理这个问题。 我的代码看起来像: public void bindView(View view, Context context, Cursor cursor) final String rowid = cursor.getString(cursor.getColumnIndexOrThrow(Database.ROWID)); Cursor commentcursor = c.getContentResolver().query(DatabaseProvider.CONTENT_URI_COMMENTTABLE, freeWriteCommentColumns, Database.PARENTPOSTROWID + ” =?”, new String[]{rowid}, null); commentcursor.moveToFirst(); while (commentcursor.isAfterLast() == false){ //get comment //add to comment text view list } 我已经研究过CursorJoiners,但这似乎并没有用。 我玩过JOINS,但这会使行数大于它需要的数量。 我正在玩一个注释表游标的持有者,该游标是在创建适配器时创建的并设置为全局variables。 这似乎是一个不错的途径,因为我不必每次都重新查询。 我只是不确定如何处理这种情况。

添加新项目后调用Requery后,带有CursorAdapter的Android ListView具有错误的滚动位置

这是场景:我有一个简单的ListView显示Twitter提要。 我有一个CursorAdapter,它从sqlite获取推文。 当我在我的光标上调用requery()时,我希望将获取已添加到数据库中的新推文。 这一切都很好,在这种情况发生后,新的项目甚至可以在ListView中看到。 问题是滚动位置似乎是根据项目位置偏移量保存的。 因此,假设我的ListView中的第一个可见位置是4.当我重新查询并将2个新项目添加到列表顶部时,ListView将第一个可见项目滚动位置保持为4,但是因为列表中有两个新项目,我现在在第4位看到一个与我刷新之前不同的项目。 此图片说明了之前和之后: 请注意Before, Tweet D是第一个可见项目,之后, Tweet B现在成为第一个可见项目。 我的问题是,在调用requery时,如何根据光标位置保持相同的滚动位置,这样在这个例子中, Tweet D仍然是重新查询后的第一个可见项?

CursorAdapter动态排序

我目前使用带有Loader的CursorAdapter 。 Loader加载的数据包含一个位置。 我想从最近的到最远的地方订购我的物品。 我已经计算了显示它的距离,我现在需要find一种动态排序数据的方法。 我可能每次我的数据更改时都会修改CursorLoader排序,但是一次又一次地执行相同的SQL查询只是为了改变顺序看起来对我来说太过分了…… 有没有办法动态排序CursorAdapter数据?

Android – 在SearchView建议中防止文本截断?

出现在SearchView下面的默认ListView的建议包含被截断的文本。 我希望文本完整显示(如果需要,可以在多行显示)。 我已经提出了两种可能的方法来解决这个问题但是,由于没有在网上find的例子,我希望这里有人可以帮助… 方法#1 / Q1:如何直接访问和修改包含SUGGEST_COLUMN_TEXT_1和SUGGEST_COLUMN_TEXT_1文本的TextView的外观? 方法#2 / Q2:或者,SearchView有一个setSuggestionsAdapter(CursorAdapter adapter)方法,看起来它可能(更多?)比方法#1更合适。 虽然我已经阅读了CursorAdapters并且已经在我的应用程序中实现了一个,但我不确定如何为SearchView配置一个(特别是在访问游标方面),所以任何人都可以帮我解决一些一般指导还是一个骨架的例子? 以下是我的SearchViewFragment类中的现有代码: public class SearchViewFragment extends Fragment { public SearchViewFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View fragmentView = inflater.inflate(R.layout.fragment_search_view, container, false); // Use […]