【问题标题】:how to display data in listview from database using raw query如何使用原始查询在列表视图中显示数据库中的数据
【发布时间】:2013-03-15 21:50:06
【问题描述】:

在我的项目中有 2 个活动;在一个活动中,用户输入 2 个症状并按下一个按钮,打开下一个活动。我希望下一个活动根据症状以列表视图格式显示所有可能疾病的名称。谁能告诉我该怎么做?我试过了,但它显示空指针异常。我正在使用 Sqlite 数据库。

public class LstView extends Activity {
private Database db;
private Auto ato;
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listname);
        ListView lstv =(ListView) findViewById(R.id.listView1);
        db=new Database(LstView.this);
        db.openDB();
        String a=ato.selected;
        String b=ato.selected1;
       // String[] lst=db.getName(a, b);
        String[] from=new String[]{db.COLUMN_1_NAME};
       int[] to= new int[]{R.id.text};
       Cursor csr=db.getName(a, b); 
      // ArrayAdapter<String> adt= new ArrayAdapter<String>(getBaseContext(),R.layout.list_view,lst);
       SimpleCursorAdapter adt =new SimpleCursorAdapter(this, R.layout.list_view, csr, from, to);
      // SimpleCursorAdapter adt = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, db.getName(a,b), new String[] { "Name" }, new int[] { android.R.id.text1 });
        lstv.setAdapter(adt);
 }


}

String[] Sympt= db.getSymptom();



    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.list_view,Sympt);
    textView.setAdapter(adapter);
    textView.setThreshold(1);
    textView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView arg0, View arg1, int arg2,
                long arg3) {

             int    idn=arg0.getId();
              selected = arg0.getItemAtPosition(arg2).toString();
                System.out.println("newww "+idn);
                System.out.println("newww1 "+selected);
                String[] Sympt1=db.getSymptom1(selected);
                for(int i=0;i<Sympt1.length;i++)
                {
                    System.out.println("value array "+Sympt1[i]);
                }
                ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(getBaseContext(), R.layout.list_view,Sympt1);
                textView1.setAdapter(adapter1);
                textView1.setThreshold(1);
            // TODO Auto-generated method stub
            //Toast.makeText(getApplicationContext(), "HI", Toast.LENGTH_SHORT).show();
        }
    });
textView1.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        int idn1=arg0.getId();
        selected1=arg0.getItemAtPosition(arg2).toString();
        System.out.println("neww2"+idn1);
        System.out.println("neww3"+selected1);

    }
});
search.setOnClickListener(new OnClickListener(){

    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Intent i = new Intent(getApplicationContext(),LstView.class);
        startActivity(i);
    }

});



}

here is the which im geting after clicking on button

03-16 09:49:33.993: W/dalvikvm(331): threadid=1: 线程以未捕获的异常退出 (group=0x40015560) 03-16 09:49:34.003:E/AndroidRuntime(331):致命异常:主要 03-16 09:49:34.003: E/AndroidRuntime(331): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.autocmplt/com.example.autocmplt.LstView}: java.lang.NullPointerException 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.os.Handler.dispatchMessage(Handler.java:99) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.os.Looper.loop(Looper.java:123) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 java.lang.reflect.Method.invokeNative(Native Method) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 java.lang.reflect.Method.invoke(Method.java:507) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 03-16 09:49:34.003: E/AndroidRuntime(331): at dalvik.system.NativeStart.main(Native Method) 03-16 09:49:34.003: E/AndroidRuntime(331): 由: java.lang.NullPointerException 引起 03-16 09:49:34.003: E/AndroidRuntime(331): 在 com.example.autocmplt.LstView.onCreate(LstView.java:22) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 03-16 09:49:34.003: E/AndroidRuntime(331): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 03-16 09:49:34.003: E/AndroidRuntime(331): ... 11 更多 03-16 09:49:37.643: I/Process(331): 发送信号。 PID:331 SIG:9

【问题讨论】:

  • 也许一些 java 代码或 logcat 会很好......
  • 在此处发布您的日志输出...

标签: android listview


【解决方案1】:

什么是数据库?它没有 android 类,所以如果你使用 SQLite,那么你使用的不是 Android 平台提供的版本。

每当您遇到异常时,您必须发布 logCat。大多数关注此列表的人都时间紧迫,因此我们不能花一个小时搜索您的代码来查找可能导致问题的内容。相反,logCat 会立即识别导致错误的语句。

您还应该考虑将 cmets 添加到您的代码中,并为您的类、方法和变量提供更多的助记名称。无论如何,从头开始阅读代码是很困难的,而且当我们必须仔细查看代码以确定“a”应该是什么时,情况会变得更糟。

【讨论】:

  • 我正在使用 "a" 和 "b" 存储来自 autocompletetext 的数据,并将此数据传递给数据库类以从列中选择名称并以 Listviewview 形式显示
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 2017-12-05
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多