Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关于从SQLite获取值_Android_Sqlite - Fatal编程技术网

Android 关于从SQLite获取值

Android 关于从SQLite获取值,android,sqlite,Android,Sqlite,当我单击列表视图时,我想将textview设置为SQLite中的值 这是我的方式: myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView arg0, android.view.View arg1, int arg2, long arg3) { myCursor.moveToPosition(arg2); setContent

当我单击
列表视图时,我想将
textview
设置为
SQLite
中的值 这是我的方式:

myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
public void onItemClick(AdapterView arg0, 
android.view.View arg1, int arg2, long arg3) { 
myCursor.moveToPosition(arg2); 
setContentView(R.layout.main2); 
_id = myCursor.getInt(0); 
textStudyUID.setText(myCursor.getString(0)); 
但有一个例外,下面是日志:

07-05 12:37:16.613: ERROR/AndroidRuntime(17689): java.lang.NullPointerException
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at irdc.sqlitetest2.SQLiteTest2$1.onItemClick(SQLiteTest2.java:53)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.widget.ListView.performItemClick(ListView.java:3285)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.os.Handler.handleCallback(Handler.java:587)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.os.Handler.dispatchMessage(Handler.java:92)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.os.Looper.loop(Looper.java:123)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at android.app.ActivityThread.main(ActivityThread.java:4363)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at java.lang.reflect.Method.invokeNative(Native Method)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at java.lang.reflect.Method.invoke(Method.java:521)

07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-05 12:37:16.613: ERROR/AndroidRuntime(17689): at dalvik.system.NativeStart.main(Native Method)
以下是完整的代码:

public class SQLiteTest2<View> extends Activity {       
    private DoDB ToDoDB;
    private Cursor myCursor;
    private int _id;
    private ListView myListView;
    public TextView textStudyUID;
    protected ListAdapter adapter1;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);   
        myListView = (ListView)findViewById(R.id.ListView);
        textStudyUID = (TextView)findViewById(R.id.widget40);
        ToDoDB = new DoDB(this);
        myCursor = ToDoDB.select();
        SimpleCursorAdapter adapter1 = new SimpleCursorAdapter(this,R.layout.list,myCursor,new String[]{DoDB._StudyUID},new int[]{R.id.listTextView1});
        myListView.setAdapter(adapter1);

        myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0,android.view.View arg1, int arg2,                                     long arg3) {
               myCursor.moveToPosition(arg2);
               setContentView(R.layout.main2);
               _id = myCursor.getInt(9);
               textStudyUID.setText(myCursor.getString(0));
        }
      });
公共类SQLiteTest2扩展活动{
私人多德-托多德;
私有游标myCursor;
私人内部id;
私有列表视图myListView;
公共文本视图文本研究ID;
受保护的ListAdapter适配器1;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myListView=(ListView)findViewById(R.id.ListView);
textStudyUID=(TextView)findViewById(R.id.widget40);
ToDoDB=新的DoDB(本);
myCursor=ToDoDB.select();
SimpleCursorAdapter1=新的SimpleCursorAdapter(this,R.layout.list,myCursor,新字符串[]{DoDB.\u StudyUID},新int[]{R.id.listTextView1});
myListView.setAdapter(适配器1);
myListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
公共视图单击(AdapterView arg0,android.view.view arg1,int arg2,long arg3){
myCursor.moveToPosition(arg2);
setContentView(R.layout.main2);
_id=myCursor.getInt(9);
textStudyUID.setText(myCursor.getString(0));
}
});

由于作用域的原因,您将无法访问匿名函数(
onItemClick
)中的myCursor,但您要查找的光标已传递给该函数。请使用以下方法检索它:

CursorAdapter adapter = (CursorAdapter) arg0.getAdapter();
Cursor myCursor = adapter.getCursor();

您可能需要考虑正确命名参数以提高可读性。

public void onItemClick(AdapterView<? extends Adapter> parent, View v, int position, long id)

public void onItemClick(AdapterView谁是myCursor填充的,它是否在
OnItemClickListener
之外成为
final
?请使用文本编辑字段上方的
101010
-按钮格式化代码。我已经像这样填充myCursor“private Cursor myCursor”外部。您的代码看起来不错,您需要逐步通过调试器,查看哪一行导致空指针异常。您可以将代码发布到填充光标的位置吗?我使用“private final cursor myCursor”,但它表示需要“=”抱歉,第一个答案是错误的,但我已使用正确的方法进行了更新。我的更改如下:public void onItemClick(AdapterViews)直到这个“java.lang.NullPointerException”您能粘贴第二行(NullPointerException之后的那一行)吗,它应该给出导致异常的代码的行号。然后打开SQLiteTest2,找到上面提到的行并粘贴到这里