0

我有一个数据库和一个方法,它可以将我的所有信息从我的数据库中获取到 TextView。它只显示每行的标题,还有更多列,当我单击标题时,我想在新意图上显示这些列。我的问题是,我怎样才能让每个标题都可以点击,如果点击它会打开一个带有相关信息的新意图(需要传递 id)?非常感谢。:)

我的历史活动 -

public class HistoryActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.history_layout);
        final LinearLayout linearLayoutBackground = (LinearLayout) findViewById(R.id.MainLinearLayout);
        TextView tv = (TextView) findViewById(R.id.tvHistory);
        DataBaseHelper DataBaseHelper = new DataBaseHelper(this);

        Intent mIntent = getIntent();
        int intValue = mIntent.getIntExtra("intVariableName", 0);

        int backgroundImages[] = {R.drawable.background1,
                R.drawable.background2};
        final Drawable backgroundImage = getResources().getDrawable(
                backgroundImages[intValue]);
        linearLayoutBackground.setBackgroundDrawable(backgroundImage);

        DataBaseHelper.open();
        String HistoryData = DataBaseHelper.getListData();
        DataBaseHelper.closee();
        tv.setText(HistoryData);


    }

}

getListData 方法 -

public String getListData() {
    open();
    Cursor c = myDataBase.query(TABLE_NAME1, columns, WHATTODONOW_COLUMN_ID, null, null, null, null);
    String result = "";
    int iTitle = c.getColumnIndex(WHATTODONOW_COLUMN_TITLE);
    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iTitle) + "\n";
    }
    return result;
}

历史布局 -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/MainLinearLayout"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">


    <TableLayout
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="10dp">>

        <TableRow>

            <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:text="All the things you have already done!"
                    android:textSize="20dp"
                    android:textStyle="bold">
            </TextView>

        </TableRow>
    </TableLayout>

    <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingBottom="15dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp">

        <TextView
                android:id="@+id/tvHistory"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:text="get info from db"
                android:paddingBottom="10dp"
                android:textSize="25dp">
        </TextView>

    </ScrollView>

</LinearLayout>
4

1 回答 1

0

根据我的经验,有两种方法。首先,不要使用 ListView,而是查看 ExpandableListView,它可能会在一个活动中完成您想要的,而不必启动另一个意图。

其次,如果您想坚持使用 2 Intent 设计,您必须将一些数据从当前 Intent 传递给新 Intent,您可以执行以下操作:

Intent i = new Intent(yourcurrentactivity.this, yournewactivity.class);
                    // following line is an example of passing data to the new intent.
        i.putExtra(getString(R.string.str_selecteddialog), "1");
        startActivity(i);
        this.finish();

在您在 onCreate 中启动的新意图中,您需要从包中检索数据:

Bundle extras = getIntent().getExtras();
    if (extras != null) {
        // Log.i(TAG, " 022:... we got some extras");
        str_selecteddialog = getIntent().getStringExtra(getString(R.string.str_selecteddialog));

取决于变量类型,有不同类型的 put 和 get 'Extras'。现在您必须决定:我是从游标中获取所有数据并将其传递给这个新意图,还是只传递行 id 列,通常是“_id”并在此活动中查询它。

希望这可以帮助。

于 2013-07-31T03:33:05.573 回答