从listView访问数据库中的数据

时间:2011-07-02 16:48:52

标签: android database listview

我在activity1中有一个ListView,其中有几个项目来自数据库。用户单击Listview中的项目,它将导航到activity2,其中应显示单词的详细信息,这些单词存储在数据库中作为列字,定义。但屏幕2中显示的内容取决于屏幕1中单击的项目

对于Ex - 屏幕1中的用户点击A - 屏幕2中显示从A开始的单词。是否有任何方法可以传递行ID,以便在下一个屏幕中显示数据库中的单词和定义。

谢谢你... 第一项活动的代码:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            // TODO Auto-generated method stub


            Cursor c = mDictCursor;
            c.moveToPosition(position);
            Intent i = new Intent(FirstActivity.this, SecondActivity.class);
            Bundle bundle=new Bundle();
            //intent.putExtra("position",position);
            bundle.putLong(DBAdapter.KEY_ROWID, id);
            bundle.putString(DBAdapter.KEY_TITLE, c.getString(
                  c.getColumnIndexOrThrow(DBAdapter.KEY_TITLE)));
            bundle.putString(DBAdapter.KEY_DEFINITION, c.getString(
                    c.getColumnIndexOrThrow(DBAdapter.KEY_DEFINITION)));
            i.putExtras(bundle);
            startActivity(i);
        }

SecondActivity代码:

Bundle extras = getIntent()。getExtras();

        mRowId = extras.getLong(DBAdapter.KEY_ROWID);
        String title = extras.getString(DBAdapter.KEY_TITLE);
        String body = extras.getString(DBAdapter.KEY_DEFINITION);


        TextView word = (TextView) findViewById(R.id.word);
        word.setText(title);

            TextView definition = (TextView) findViewById(R.id.definition);
            definition.setText(body);
        }

每当我点击listview项时,它都会显示强制关闭的对话框。请帮忙......

2 个答案:

答案 0 :(得分:1)

您可以在Screen1中使用Intent对象putExtra(String name,int value)方法(参见1)并将intent对象传递给Screen2,在Screen2中使用Intent对象的getIntExtra(String name,int defaultValue)方法(参见2)。 1.在Screen1中使用startActivity(Intent intent)方法 2.使用Screen2中的getIntent()方法获取您在Screen1中传递的Intent对象

答案 1 :(得分:1)

我猜你正在寻找类似这样的东西。 https://market.android.com/developer?pub=acharya https://market.android.com/details?id=com.acharyaapp.malayalam.aksharam.full (这些是我的应用程序)

为什么不尝试使用Singleton类来存储信息。一个Intent可以设置它,另一个意图可以读取它。我在我的应用程序中使用了这个逻辑。

修改

public class MySingleton {
    private static final MySingleton INSTANCE = new MySingleton();
    //TODO ... all your variable as public static variables. eg. KEY_TITLE
    private MySingleton() { }
    public static MySingleton getInstance() 
            return INSTANCE;
    }
}

内部活动,将它们用作普通实例。只需确保调用getInstance()而不是构造函数来获取共享实例。

希望这会有所帮助。