我有一个包含团队名称和团队编号的数据库(都存储为字符串 - 数字有时会包含字母)
我想要它,所以当你单击“打开”按钮时,它会弹出一个弹出窗口,其中包含所有团队的名字和数字,如果你点击一个,它将关闭弹出窗口并设置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”。
答案 0 :(得分: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
}
});