Java Android SQlite数据检索错误
我正在开发一款Android应用程序。。其中我使用了Java Android SQlite数据检索错误,java,android,sqlite,Java,Android,Sqlite,我正在开发一款Android应用程序。。其中我使用了SQLite数据库来存储值,我有两个按钮->保存来保存数据和保存的数据来显示存储的数据 当用户单击任何一行保存的数据时,必须显示特定的数据,但我的问题是,当用户按下任何一行时,只会显示最后一行,而不是按下的行 请检查并帮助我 我的活动是: public void saveddata(View V) { Cursor c = db.rawQuery("SELECT * from Data", null); int count =
SQLite
数据库来存储值,我有两个按钮
->保存来保存数据和保存的数据来显示存储的数据
当用户单击任何一行保存的数据时,必须显示特定的数据,但我的问题是,当用户按下任何一行时,只会显示最后一行,而不是按下的行
请检查并帮助我
我的活动是:
public void saveddata(View V)
{
Cursor c = db.rawQuery("SELECT * from Data", null);
int count = c.getCount();
c.moveToFirst();
TableLayout tableLayout = new TableLayout(getApplicationContext());
tableLayout.setVerticalScrollBarEnabled(true);
TableRow tableRow;
TextView textView1, textView2,textView3,textView4,textView5;
tableRow = new TableRow(getApplicationContext());
textView1 = new TextView(getApplicationContext());
textView1.setText("FirstName");
textView1.setTextColor(Color.RED);
textView1.setTypeface(null, Typeface.BOLD);
textView1.setPadding(10, 10, 10, 10);
tableRow.addView(textView1);
textView2 = new TextView(getApplicationContext());
textView2.setText("LastName");
textView2.setTextColor(Color.RED);
textView2.setTypeface(null, Typeface.BOLD);
textView2.setPadding(10, 10, 10, 10);
tableRow.addView(textView2);
tableLayout.addView(tableRow);
for(Integer j=0; j<count; j++)
{
tableRow = new TableRow(getApplicationContext());
textView3= new TextView(getApplicationContext());
textView3.setText(c.getString(c.getColumnIndex("fname")));
textView3.setClickable(true);
ett1=textView3.getText().toString();
//datas11=textView3.getText().toString();
textView4 = new TextView(getApplicationContext());
textView4.setText(c.getString(c.getColumnIndex("mname")));
textView4.setClickable(true);
ett2=textView4.getText().toString();
//datas12=textView4.getText().toString();
textView5 = new TextView(getApplicationContext());
textView5.setText(c.getString(c.getColumnIndex("lname")));
textView5.setClickable(true);
ett3=textView5.getText().toString();
//datas13=textView7.getText().toString();
textView3.setPadding(10, 10, 10,10);
textView5.setPadding(10, 10, 10, 10);
tableRow.addView(textView3);
tableRow.addView(textView5);
tableLayout.addView(tableRow);
c.moveToNext();
textView3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this ,SavedDate.class);
intent.putExtra("ett1",ett1 + "");
intent.putExtra("ett2",ett2 + "");
intent.putExtra("ett3",ett3 + "");
startActivity(intent);
}
});
}
setContentView(tableLayout);
db.close();
}
public void saveddata(视图五)
{
游标c=db.rawQuery(“从数据中选择*”,null);
int count=c.getCount();
c、 moveToFirst();
TableLayout TableLayout=新的TableLayout(getApplicationContext());
tableLayout.setVerticalScrollBarEnabled(true);
TableRow TableRow;
文本视图文本视图1、文本视图2、文本视图3、文本视图4、文本视图5;
tableRow=新的tableRow(getApplicationContext());
textView1=新的TextView(getApplicationContext());
textView1.setText(“名字”);
textView1.setTextColor(Color.RED);
textView1.setTypeface(null,Typeface.BOLD);
textView1.setPadding(10,10,10,10);
tableRow.addView(textView1);
textView2=新的TextView(getApplicationContext());
textView2.setText(“姓氏”);
textView2.setTextColor(Color.RED);
textView2.setTypeface(null,Typeface.BOLD);
textView2.setPadding(10,10,10,10);
tableRow.addView(textView2);
tableLayout.addView(tableRow);
对于(整数j=0;j原因是动态创建的textview覆盖了textview的click事件。因此,在for循环结束时,last click事件将指向最后一条记录。您可以使用自定义listview来代替此动态生成的表行,并在单击时显示相应的数据。如果您希望一个示例listview和Sqlite数据库。嘿,这是您的新更新代码,这将对您有所帮助
Cursor c = db.rawQuery("SELECT * from Data", null);
int count = c.getCount();
c.moveToFirst();
TableLayout table=new TableLayout;
table.setGravity(Gravity.CENTER);
table.setStretchAllColumns(true);
table.setShrinkAllColumns(true);
TableRow rowLabels = new TableRow(this);
rowLabels.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
rowLabels.setBackgroundDrawable(getResources().getDrawable(
R.xml.tablerow));
TextView srnoLabel = new TextView(this);
srnoLabel.setText("FirstName");
srnoLabel.setTypeface(Typeface.SERIF, Typeface.BOLD);
srnoLabel.setTextColor(Color.RED);
srnoLabel.setPadding(40, 5, 0, 5);
srnoLabel.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17);
rowLabels.addView(srnoLabel);
TextView pLabel = new TextView(this);
pLabel.setText("Middle Name");
pLabel.setTypeface(Typeface.SERIF, Typeface.BOLD);
pLabel.setTextColor(Color.RED);
pLabel.setPadding(20, 5, 0, 5);
pLabel.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17);
rowLabels.addView(pLabel);
TextView valLabel = new TextView(this);
valLabel.setText("Last Name");
valLabel.setTypeface(Typeface.SERIF, Typeface.BOLD);
valLabel.setTextColor(Color.RED);
valLabel.setPadding(40, 5, 0, 5);
valLabel.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17);
rowLabels.addView(valLabel);
rowLabels.setPadding(0, 0, 10, 0);
if (c.moveToFirst()) {
do {
String f_name = c.getString(c
.getColumnIndex("fname"));
String l_name = c.getString(c
.getColumnIndex("lname"));
String m_name = c.getString(c
.getColumnIndex("mname"));
TableRow rowdata = new TableRow(this);
rowdata.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
// 1 column
TextView f_txt = new TextView(this);
f_txt.setText(Integer.toString(count));
f_txt.setPadding(50, 3, 10, 3);
f_txt.setText(f_name);
f_txt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17);
f_txt.setTextColor(Color.BLACK);
f_txt.setClickable(true);
rowdata.addView(f_txt);
// 2 column
final TextView m_txt = new TextView(this);
m_txt.setText(m_name);
m_txt.setPadding(15, 3, 10, 3);
m_txt
.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17);
m_txt.setTextColor(Color.BLACK);
rowdata.addView(m_txt);
// 3 column
final TextView l_txt = new TextView(this);
l_txt.setText(l_name);
//Annual_crop_loss.toString());
l_txt.setPadding(45, 3, 10, 3);
l_txt.setTextSize(
TypedValue.COMPLEX_UNIT_DIP, 17);
l_txt.setTextColor(Color.BLACK);
rowdata.addView(m_txt);
rowdata.setPadding(1, 1, 1, 1);
table.addView(rowLabels);
table.addView(rowdata);
}
} while (c.moveToNext());
table.setPadding(10, 10, 10, 10);
setContentView(table);
}
finally {
if (dbase != null)
// newDB.execSQL("DELETE FROM " + tableName);
c.close();
dbase.close();
}
保存时存储一个Id
,并将该Id
传递给下一个活动,然后使用该Id
create方法获取数据,该方法将从数据库获取数据并将数据分配给listview。然后,您可以使用listview的setOnItemClickListener
,这将帮助您获取特定行。请检查此链接。上面的示例不起作用?或者您想在自己的代码中修改?并且您还可以将clickListener添加到loop.rowdata.setOnClickListener(新OnClickListener(){public void onClick(视图v){}})中的每一行中;