Android 通过将列值设置为1来确认联系人
我已经在管理员活动中列出了我的联系人列表,通过将Android 通过将列值设置为1来确认联系人,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我已经在管理员活动中列出了我的联系人列表,通过将etat的值从0列更改为1列来确认它们,但是当我这样做时,列表中的所有联系人都会得到确认 数据库: public void SETETAT(Contact e) { //helper.insertContact(c); db = this.getWritableDatabase(); ContentValues values = new ContentValues(); String query=" updat
etat
的值从0列更改为1列来确认它们,但是当我这样做时,列表中的所有联系人都会得到确认
数据库:
public void SETETAT(Contact e) {
//helper.insertContact(c);
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
String query=" update contacts set etat='1' where id="+COLUMN_ID;
Cursor ce=db.rawQuery(query ,null);
int count=ce.getCount();
e.getId();
e.getEmail();
e.getName();
e.getPass();
e.getPhone();
e.getRepass();
values.put(COLUMN_ETAT, e.getEtat());
db.insert(TABLE_NAME, null, values);
db.close();
}
名单
public class Tab2 extends Activity implements OnItemClickListener{
Cursor cursor;
DatabaseHelper db;
String info;
ListView datalist;
ArrayList<String> databaseList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onglet1);
db = new DatabaseHelper(this);
datalist = (ListView) findViewById(R.id.liste);
List<Contact> values = db.getAllContact();
ArrayAdapter<Contact> adapter = new ArrayAdapter<Contact>(Tab2.this,
android.R.layout.simple_list_item_1, values);
datalist.setAdapter(adapter);
datalist.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position);
Intent intent = new Intent();
intent.setClass(this, Approuver.class);
intent.putExtra("position", position);
intent.putExtra("id", id);
startActivity(intent);
}
}
但是当我这么做的时候,名单上的所有联系人都被确认了
那么你的问题就错了
String query=" update contacts set etat='1' where id="+COLUMN_ID;
您可以在Android之外使用SQLite。这可能是调试问题的好方法
但是,如果我理解正确,您正在尝试在单击某行时更新该行的联系人 为此,我认为您应该使用可用的
Contact.getID()
方法
因此,将适配器/列表移动到成员变量中
ArrayAdapter<Contact> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onglet1);
db = new DatabaseHelper(this);
datalist = (ListView) findViewById(R.id.liste);
adapter = new ArrayAdapter<Contact>(Tab2.this,
android.R.layout.simple_list_item_1, db.getAllContact());
datalist.setAdapter(adapter);
阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.onglet1);
db=新的DatabaseHelper(此);
datalist=(ListView)findViewById(R.id.liste);
适配器=新阵列适配器(表2.1),
android.R.layout.simple_list_item_1,db.getAllContact();
datalist.setAdapter(适配器);
然后,在监听器中,您只想更新您单击的项。我不理解您不必要地调用的所有get方法,或者使用内容值插入查询
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
final Contact item = adapter.getItem(position);
SQLiteDatabase database = db.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("etat", 1);
database.update("contacts", values, "id=?", new String[] { String.valueOf(item.getId()) });
database.close();
}
public void onItemClick(适配器视图l、视图v、内部位置、长id){
最终联系人项目=适配器.getItem(位置);
SQLiteDatabase=db.getWritableDatabase();
ContentValues=新的ContentValues();
价值。投入(“etat”,1);
update(“contacts”,value,“id=?”,新字符串[]{String.valueOf(item.getId())});
close()数据库;
}
为什么按钮会调用setContentView(R.layout.activity_main);
如果你想加载一个新的布局,使用碎片这不是问题,只是一个测试,你知道吗?我会使用碎片我不太明白问题出在哪里,那么…你确实联系了新联系人()
,然后SETETAT
,但它不会有任何值,因为它是一个新对象。此外,我认为UPDATE
sql查询不会返回任何内容。您需要选择更新后的值我不明白您刚才说的:(我正在尝试将etat从更新为1。我尝试了此操作,但该项目不可单击。您能告诉我如何使其单击吗?我丢失了,并且在此行中出现错误最终联系项目=适配器。getItem(位置);将其转换为联系人类型是很困难的另一个问题是,在确认第一个联系人后,它不会确认其他联系人。我不知道“确认”是什么意思,但请尝试编辑此代码。您已经将单击侦听器设置为列表视图。我想通过单击每个联系人的etat将其设置为1
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
final Contact item = adapter.getItem(position);
SQLiteDatabase database = db.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("etat", 1);
database.update("contacts", values, "id=?", new String[] { String.valueOf(item.getId()) });
database.close();
}