Android-获取表中选定的行值
我正在表格中动态地从mssql获取数据。我想以字符串形式获取所选行中的值。例如,我想获得屏幕的“99”、“Yonca”、“Lodi”值。我该怎么做?以下是我的创建表代码:Android-获取表中选定的行值,android,get,row,tablelayout,selectedvalue,Android,Get,Row,Tablelayout,Selectedvalue,我正在表格中动态地从mssql获取数据。我想以字符串形式获取所选行中的值。例如,我想获得屏幕的“99”、“Yonca”、“Lodi”值。我该怎么做?以下是我的创建表代码: public void addData() { for(int i = 0 ; i < protokolNo.length ; i++) { /** * Creating table row here */ tr = new TableR
public void addData()
{
for(int i = 0 ; i < protokolNo.length ; i++)
{
/**
* Creating table row here
*/
tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
tVProtokolNo = new TextView (this);
tVProtokolNo.setText(protokolNo[i]);
tVProtokolNo.setTextColor(Color.RED);
tVProtokolNo.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
tVProtokolNo.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
tVProtokolNo.setPadding(5, 5, 5, 5);
tr.addView(tVProtokolNo);
TextView tVAdi = new TextView(this);
tVAdi.setText(adi[i]);
tVAdi.setTextColor(Color.RED);
tVAdi.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
tVAdi.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
tVAdi.setPadding(5, 5, 5, 5);
tr.addView(tVAdi);
TextView tVSoyadi = new TextView(this);
tVSoyadi.setText(soyadi[i]);
tVSoyadi.setTextColor(Color.RED);
tVSoyadi.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
tVSoyadi.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
tVSoyadi.setPadding(5, 5, 5, 5);
tr.addView(tVSoyadi);
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
/**
* Colouring selected row
*/
tr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setBackgroundColor(Color.DKGRAY);
v.showContextMenu();
}
});
registerForContextMenu(tr);
}
}
public void addData()
{
for(int i=0;i
最好使用带有自定义适配器的Android ListView,请参阅以下链接。。。。
这是脏的,但能用。
在活动类中创建全局私有变量
调用TableRow tr1=null代码>
然后可以在addData()方法中使用以下代码
在<代码>registerForContextMenu(tr)之前代码>呼叫:
tr.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
view.setBackgroundColor(Color.DKGRAY);
}
});
tr.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
tr1=(TableRow)v; //assign selected TableRow gobally
openContextMenu(v);
return true;
}
});
然后在同一活动中使用以下命令,使其与上下文菜单一起工作,因为我从您的代码中获得了这些命令:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, v.getId(), 0, "Do YourStuff");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
int ccount= (tr1).getChildCount();
String[] str =new String[ccount];
for(int i=0;i<ccount;i++)
{
TextView tv = (TextView)(((TableRow)tr1)).getChildAt(i);
str[i]=tv.getText().toString(); //set selected text data into the String array
}
Toast.makeText(ListActivity2.this,Arrays.toString(str), 2).show();
return true;
}
@覆盖
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息){
super.onCreateContextMenu(menu,v,menuInfo);
添加(0,v.getId(),0,“doyourstuff”);
}
@凌驾
公共布尔值onContextItemSelected(MenuItem项){
int ccount=(tr1.getChildCount();
String[]str=新字符串[ccount];
对于(int i=0;i确定在这一点上,我已经尝试过了,但我做不到。您能给我一个引用我的代码的简单示例吗?您想在单击值时获取值还是在单击onContextItemSelected()项时获取值什么?我已经在我的项目中使用了,但是我必须通过表格来做这件事。非常感谢。这正是我所期待的。很乐意帮助。但是你应该真正考虑用ListVIEW做你的东西,因为它通常处理你的ContextMenuInfo菜单中的东西。