我把其他数据打印出来,发现只有id是对的,其他传值都是只把最后一条的记录传过去的比如我点击第一条数据,传过去的id确实是1,可是剩下的数据值都是最后一条记录的数据
为什么呢?求大神们指导一下,谢谢!
这就是你存储数据的方式或者跳转的携带数据方式出了问题
你把你传数据的类和接数据的类发上来看看
public class InComeBookActivity extends Activity {
ImageView InComeBookReturn;
ListView ListViewInComeBook;
CursorAdapter adapter;
private MyOpenHelper helper;
private Cursor cur;
String ICMoney;
String ICTime;
String ICRemarks;
String ICSource;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_incomebook);
ListViewInComeBook = (ListView) findViewById(R.id.ListViewInComeBook);
InComeBookReturn = (ImageView) findViewById(R.id.InComeBookReturn);
helper = new MyOpenHelper(this);
InComeBookReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// finish();
Intent intent = new Intent();
intent.setClass(InComeBookActivity.this, MainActivity.class);
startActivity(intent);
}
});
SQLiteDatabase db = helper.getReadableDatabase();
// select 列名 ,列名 ..from表名where ..
cur = db.query("InCome", // 表名
null, // 选择的列的列名 String[]
null, // where后面的语句
null,// 行条件的参数 String[]
null,// group by 后面的语句
null, // having 后面的语句
null // 排序
);
adapter = new CursorAdapter(this, cur) {
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = LayoutInflater.from(InComeBookActivity.this)
.inflate(R.layout.activity_incomebook_listitem, null);
return view;
}
// 绑定activity_incomebook_listitem视图
@Override
public void bindView(View v, Context context, Cursor cursor) {
final TextView tvICMoney = (TextView) v
.findViewById(R.id.tvICBookMoney);
final TextView tvICTime = (TextView) v
.findViewById(R.id.tvICBookTime);
final TextView tvICRemarks = (TextView) v
.findViewById(R.id.tvICBookRemarks);
final TextView tvICSource = (TextView) v
.findViewById(R.id.tvICBookSource);
final ImageView goIn = (ImageView) v
.findViewById(R.id.goIn);
// 通过游标取得Id
final int id = cursor.getInt(cursor.getColumnIndex("_id"));
// 传值到UpdateInComeBookActivity
goIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putInt("id", id);
Log.i("zxj", " wxl id="+id);
bundle.putString("icmoney", ICMoney);
bundle.putString("ictime", ICTime);
bundle.putString("icremarks", ICRemarks);
bundle.putString("icsource", ICSource);
Intent intent = new Intent();
intent.putExtras(bundle);
intent.setClass(InComeBookActivity.this, UpdateInComeBookActivity.class);
startActivity(intent);
}
});
int columnIndex = cursor.getColumnIndex("Money");
ICMoney = cursor.getString(columnIndex);
int columnIndex2 = cursor.getColumnIndex("InComeTime");
ICTime = cursor.getString(columnIndex2);
int columnIndex3 = cursor.getColumnIndex("Remarks");
ICRemarks = cursor.getString(columnIndex3);
int columnIndex4 = cursor.getColumnIndex("Source");
ICSource = cursor.getString(columnIndex4);
// 设置显示
tvICMoney.setText(ICMoney);
tvICTime.setText(ICTime);
tvICRemarks.setText(ICRemarks);
tvICSource.setText(ICSource);
}
};
ListViewInComeBook.setAdapter(adapter);
/*Log.i("zxj", "ListView000");
// 传值到UpdateInComeBookActivity
ListViewInComeBook.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String, Object> click = (Map<String, Object>) parent.getItemAtPosition(position);
Log.i("zxj", "ListView");
String income_id = click.get("_id").toString();
String income_money = click.get("Money").toString();
String income_time = click.get("InComeTime").toString();
String income_remarks = click.get("Remarks").toString();
String income_source = click.get("Source").toString();
Bundle bundle = new Bundle();
bundle.putString("icid", income_id);
bundle.putString("icmoney", income_money);
bundle.putString("ictime", income_time);
bundle.putString("icremarks", income_remarks);
bundle.putString("icsource", income_source);
Intent intent = new Intent();
intent.putExtras(bundle);
intent.setClass(InComeBookActivity.this, UpdateInComeBookActivity.class);
startActivity(intent);
}
});*/
}
}
接收数据类:
package com.example.dance_society_masystem;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
public class UpdateInComeBookActivity extends Activity {
ImageView UpdateIncomeReturn;
EditText etUpdateICMoney;
EditText etUpdateICTime;
EditText etUpdateICRemarks;
EditText etUpdateICSource;
Button btUpdateIC;
Button btDeleteIC;
CursorAdapter adapter;
private MyOpenHelper helper;
private Cursor cur;
private int InComeId;
private String InComeMoney;
private String InComeTime;
private String InComeRemarks;
private String InComeSource;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_incomebook);
UpdateIncomeReturn = (ImageView) findViewById(R.id.UpdateIncomeReturn);
etUpdateICMoney = (EditText) findViewById(R.id.etUpdateICMoney);
etUpdateICTime = (EditText) findViewById(R.id.etUpdateICTime);
etUpdateICRemarks = (EditText) findViewById(R.id.etUpdateICRemarks);
etUpdateICSource = (EditText) findViewById(R.id.etUpdateICSource);
btUpdateIC = (Button) findViewById(R.id.btUpdateIC);
btDeleteIC = (Button) findViewById(R.id.btDeleteIC);
helper = new MyOpenHelper(this);
UpdateIncomeReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(UpdateInComeBookActivity.this, InComeBookActivity.class);
startActivity(intent);
}
});
//从InComeBookActivity的那边接收值
Bundle bundle = new Bundle();
bundle = this.getIntent().getExtras();
if(bundle!=null){
InComeId = bundle.getInt("id");
InComeMoney = bundle.getString("icmoney");
InComeTime = bundle.getString("ictime");
InComeRemarks = bundle.getString("icremarks");
InComeSource = bundle.getString("icsource");
}
// 设置显示
etUpdateICMoney.setText(InComeMoney);
etUpdateICTime.setText(InComeTime);
etUpdateICRemarks.setText(InComeRemarks);
etUpdateICSource.setText(InComeSource);
//修改数据
btUpdateIC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置对话框
new AlertDialog.Builder(UpdateInComeBookActivity.this)
.setTitle("系统提示") // 设置对话框标题
.setMessage("请确认是否要要修改!")// 设置显示的内容
.setPositiveButton("确认",
new DialogInterface.OnClickListener() {// 添加确定按钮
@Override
public void onClick(DialogInterface dialog,
int which) {// 确定按钮的响应事件
String UpdateICMoney = etUpdateICMoney.getText().toString().trim();
String UpdateICTime = etUpdateICTime.getText().toString().trim();
String UpdateICRemarks = etUpdateICRemarks.getText().toString().trim();
String UpdateICSource = etUpdateICSource.getText().toString().trim();
// 游标所指向的数据
// String id = cur.getString(cur.getColumnIndex("_id"));
// final int id = cursor.getInt(cursor.getColumnIndex("_id"));
SQLiteDatabase db = helper.getReadableDatabase();
// 修改的列及新值
ContentValues values = new ContentValues();
values.put("Money", UpdateICMoney);
values.put("InComeTime", UpdateICTime);
values.put("Remarks", UpdateICRemarks);
values.put("Source", UpdateICSource);
int line = db.update("InCome", values, "_id="+InComeId,null);
if (line > 0) {
Toast.makeText(UpdateInComeBookActivity.this, "修改成功!", Toast.LENGTH_LONG).show();
}
Cursor cur1 = db.query("InCome", // 表名
null, // 选择的列的列名 String[]
null, // where后面的语句
null,// 行条件的参数 String[]
null,// group by 后面的语句
null, // having 后面的语句
null // 排序
);
adapter.changeCursor(cur1);// 更新数据库
adapter.notifyDataSetChanged();// 更新数据
db.close();
finish();
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {// 添加返回按钮
@Override
public void onClick(DialogInterface dialog,
int which) {// 响应事件
// TODO Auto-generated method stub
// Log.i("alertdialog"," 请保存数据!");
}
}).show();// 在按键响应事件中显示此对话框
}
});
//删除数据
btDeleteIC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置对话框
new AlertDialog.Builder(UpdateInComeBookActivity.this)
.setTitle("系统提示") // 设置对话框标题
.setMessage("请确认是否要删除!")// 设置显示的内容
.setPositiveButton("确认",
new DialogInterface.OnClickListener() {// 添加确定按钮
@Override
public void onClick(DialogInterface dialog,
int which) {// 确定按钮的响应事件
DeleteData(InComeId);
//
finish();
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {// 添加返回按钮
@Override
public void onClick(DialogInterface dialog,
int which) {// 响应事件
// TODO Auto-generated method stub
// Log.i("alertdialog"," 请保存数据!");
}
}).show();// 在按键响应事件中显示此对话框
}
});
}
private void DeleteData(int x){
SQLiteDatabase db = helper.getReadableDatabase();
// delete方法返回影响的行数
int line = db.delete("InCome", "_id=?",
new String[] { String.valueOf(x) });
if (line > 0) {
Toast.makeText(this, "删除成功!", Toast.LENGTH_LONG).show();
}
Cursor cur1 = db.query("InCome", // 表名
null, // 选择的列的列名 String[]
null, // where后面的语句
null,// 行条件的参数 String[]
null,// group by 后面的语句
null, // having 后面的语句
null // 排序
);
adapter.changeCursor(cur1);// 更新数据库
adapter.notifyDataSetChanged();// 更新数据
db.close();
}
}