【发布时间】:2014-09-10 02:11:08
【问题描述】:
我将根据点击的内容从 android 的 TableLayout 中删除 TableRow。此表布局由 SQLiteDatabase 填充。我试图为点击的行设置 ID 并删除点击的行。它只工作一次,当我第二次单击删除按钮以删除更多行时,应用程序停止了。
我认为发生这种情况是因为当我删除第二行时,即 ID 为 2,第三行 ID 为 3,当删除第二行时,行 ID 变为 2。 知道如何从 TableLayout 中删除选定的行吗??
这些是我删除行的方法:
btnRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
int rowIDs = tampRowID;
int SOUDetailNo = tampRowID + LastSOUDetail;
mytable.removeViewAt(tampRowID);
b.deleteSOUD(SOUDetailNo);
Toast.makeText(Order.this, "SOUploadDetail no "+ Integer.toString(SOUDetailNo) + " has been deleted", Toast.LENGTH_SHORT).show();
} catch (NumberFormatException e) {
// TODO: handle exception
Toast.makeText(Order.this, "could not parse", Toast.LENGTH_SHORT).show();
}
}
});
}
我在 BuildTable() 方法中设置了行 ID:
private void BuildTable()
{
int rowID = 0;
Cursor c = b.readAllSOUD();
final int rows = c.getCount();
int cols = c.getColumnCount();
c.moveToPosition(c.getCount() - 1);
// outer for loop
final TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
row.setClickable(true);
rowID++;
row.setId(rowID);
row.setBackgroundColor(Color.WHITE);
row.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
tampRowID = row.getId();
}
});
// inner for loop
for (int j = 0; j < cols; j++)
{
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//tv.setBackgroundResource(R.drawable.cell_shape);
tv.setGravity(Gravity.LEFT);
tv.setTextSize(12);
tv.setPadding(0, 5, 0, 5);
tv.setText(c.getString(j));
//tv.setBackgroundColor(0x7C5B77);
row.addView(tv);
}
c.moveToNext();
mytable.addView(row);
}
【问题讨论】:
-
是的,它也适用于我,但需要一点服装......提前谢谢你!
-
对不起,我的声誉不足以支持你的答案。
标签: android sqlite tablelayout tablerow