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();
}