Java android-SimpleCrsorAdapter用于查看

Java android-SimpleCrsorAdapter用于查看,java,android,view,textview,simplecursoradapter,Java,Android,View,Textview,Simplecursoradapter,是否可以创建由驱动程序驱动的视图。此视图中的内容始终是来自DB的条目 该视图(dataView)如下所示: txtData1 txtData2 txtData3 btnPrev btnNext 我四处阅读并试图设置这种行为。希望它有意义: public class mActivity extends Activity { public Context me = this; public SimpleCursorAdapter mAdapter = null; public Cur

是否可以创建由驱动程序驱动的视图。此视图中的内容始终是来自DB的条目

该视图(dataView)如下所示:

txtData1
txtData2
txtData3
btnPrev btnNext
我四处阅读并试图设置这种行为。希望它有意义:

public class mActivity extends Activity {
  public Context me = this; 
  public SimpleCursorAdapter mAdapter = null;
  public Cursor mCursor = null;

  private OnClickListener btnStart_onClick = new OnClickListener() {
    public void onClick(View v) {
      setContentView(R.layout.dataView);

      mCursor = mDB.rawQuery("SELECT * FROM Data", null);
      startManagingCursor(mCursor);

      mAdapter = new SimpleCursorAdapter(
        me,
        R.layout.dataView,
        mCursor,
        new String[] {"Data1", "Data2", "Data3"},
        new int[] {R.id.txtData1 , R.id.txtData2, R.id.txtData3});

        mAdapter.setViewBinder(VIEW_BINDER);
        mCursor.moveToFirst();
    }
  };
  static final ViewBinder VIEW_BINDER = new ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex)
    {
      switch (view.getId())
      {
        case R.id.txtData1:
          TextView txt = (TextView) view;
          if (txt != null)
          {
            int index = cursor.getColumnIndex("Data1");
            txt.setText(cursor.getString(index));
          }
          return true;

        case R.id.txtData2:
          TextView txt = (TextView) view;
          if (txt != null)
          {
            int index = cursor.getColumnIndex("Data2");
            txt.setText(cursor.getString(index));
          }
          return true;

        case R.id.txtData3:
          TextView txt = (TextView) view;
          if (txt != null)
          {
            int index = cursor.getColumnIndex("Data3");
            txt.setText(cursor.getString(index));
          }
          return true;

        default:
          return false;
      }
    }
  };
}
当我从btnStart_onClick运行时,我不会在文本框中获取数据:-(

有人能帮忙吗?能这样吗

下一个问题:如何使用“上一个”或“下一个”按钮?这可能是我在“加载”第一个数据时错过的唯一一件事

编辑:我用全局mCursor和对mCursor.moveToFirst()的调用扩展了我的示例 在我的应用程序中,我还测试了next/prev按钮和函数mCursor.moveToNext()和mCursor.moveToPrevious()


但是它没有改变:-(

据我所知,我认为您的代码存在很多概念/组织/语法问题。首先,适配器通常由视图(如
ListView
Spinner
)利用,该视图通过光标填充适配器检索到的数据(或者支持它的任何数据结构)。但是,我在代码中没有看到这种模式,我想知道适配器在您的情况下会有什么用途

第二,您在单击侦听器中执行一个完整的
SELECT*
查询,即每次单击都检索所有1000条记录……好吧,具体是什么?您定义了单击侦听器,但从未将其设置到任何东西上——就像您定义适配器一样,但不将其绑定到任何东西上。设置适配器的代码,带有数据库se查询和活页夹实际上应该放在侦听器之外

最后,我相信您在发布代码之前模拟了一些变量名,因为在以下代码段中:

TextView txt = (TextView) view;
if (txt != null)
{
    int index = cursor.getColumnIndex("Data1");
    String txt = cursor.getString(index);
    txt.setText(txt);
}

我几乎看不出编译器是如何区分
if
正文最后一行的两个
txt
变量的。

欢迎使用Stackoverflow!如果您发现响应有帮助,请向上投票。如果响应成功回答了您的问题,请单击旁边的绿色复选标记接受答案。另外,请查看如何编写一个好问题的建议您是否检查过以确保sql查询实际返回内容?我相信您可以使用SimpleCursorAdapter使其工作……但为什么不使用光标呢?是的,它必须:-)我之前也为微调器设置过SimpleCursorAdapter。我不知道8)为什么我不使用游标,我对android/java编程非常陌生,不知道两者的区别。事实是,我有很多数据(1000条记录)并且不能使用简单数组。因此不能将SimpleCursorAdapter与视图中的文本框一起使用?我看到了一些实现的示例。在文档中,我发现:应该使用此类将光标中的值绑定到SimpleCursorAdapter不直接支持的视图,或者更改SimpleCursorAdapter支持的视图的绑定方式所以我想我可以这样实现:)-我能不能?很抱歉,我并没有在我的sql选择中选择所有数据。此处绑定到所做选择之前的位置。这也是为什么我在上面编写的onClick处理程序中使用一个按钮——该按钮位于主视图中,正在设置2。(数据)视图。我试着把这个例子看得小一些,只把重点放在问题上。如何将适配器绑定到我的示例?还是仍然不可能?我想它是用构造器做的。是的-很抱歉,这两个txt是我的错误,我在发布之前更改了它们以简化它-它已更正通常,您使用其
setAdapter
方法将适配器绑定到一个(即,其子内容由适配器的数据确定的视图)。