0

我有一个包含团队名称和团队编号的数据库(都存储为字符串 - 数字有时包含字母)

我想要它,所以当您单击“打开”按钮时,它会弹出一个包含所有团队名称和号码的弹出窗口,如果您单击一个,它将关闭弹出窗口并将两个 editText 设置为名称& 数字。

                Dialog d = new Dialog(this);
            ScoutingFormData info = new ScoutingFormData(this);
            info.open();
            ScrollView scr = info.getData();
            info.close();
            d.addContentView(scr, null);
            d.show();

那是来自主程序,当您单击“打开”时,会发生这种情况。ScoutingFormData 是我的 SQLite 数据库,这里是 getData:

    public ScrollView getData() {
    String[] columns=new String[]{KEY_ROWID,KEY_NAME,KEY_NUM};
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
    ScrollView result=new ScrollView(null);
    int iID = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_NAME);
    int iNum = c.getColumnIndex(KEY_NUM);
    LinearLayout vertlay = new LinearLayout(null);
    vertlay.setOrientation(LinearLayout.VERTICAL);
    for (c.moveToFirst(); !c.isAfterLast();c.moveToNext()){
        TextView tv=new TextView(null);
        tv.setText(c.getString(iNum)+"  "+c.getString(iName));
        vertlay.addView(tv);
    }
    result.addView(vertlay);
    return result;
}

所以这会构建对话框,但是我如何制作它以便主程序(顶部代码)知道何时单击了这些 TextView 之一?

附带问题:在制作视图时(如 LinearLayout vertlay = new LinearLayout(null);),我应该使用什么上下文?我不完全理解“上下文”是什么,所以我真的不知道用什么替换“null”。

4

1 回答 1

1

如何使主程序(顶部代码)知道何时单击了这些 TextView 之一?

只需制作tv clickable并添加一个OnClickListener.

附带问题:我应该使用什么上下文?

您暗示getData()在您的数据库适配器类ScoutingFormData中,保存对传递给构造函数的 Context 的引用并稍后重用它:

private Context mContext;
public ScoutingFormData(Context context) {
    mContext = context;
}

全部一起:

TextView tv=new TextView(mContext);
tv.setClickable(true);
tv.setOnClickListener(new OnClickListener() {
    public void onClick(View view) {
        // Do something
    }
});
于 2012-11-10T23:22:58.517 回答