0

我有一个活动(Contato),它显示了我在我的数据库中拥有的联系人的 ListView (banco > contatos > nome, telefone (database>table>rows))(OK/Alterar/Delete)当单击联系信息时,会出现一个对话框,并在我点击 Alterar 时向我显示信息和 3 按钮,它会将我发送到另一个活动(Alterarcontato),我有 2 个编辑文本和 1 个按钮。因此,当我发送到 Alterarcontato 活动时,我仍然希望获得我单击的联系人的索引,以便我可以更改它的值(使用db.update)。

Contato.java 代码 ListView 显示对话框并具有它的索引。

    ListView user = (ListView) findViewById(R.id.lvShowContatos);
    //String = simple value ||| String[] = multiple values/columns
    String[] campos = new String[] {"nome", "telefone"};

    list = new ArrayList<String>();
    c = db.query( "contatos", campos, null, null, null, null, null);
    c.moveToFirst();
    if(c.getCount() > 0) {
        while(true) {
           list.add(c.getString(c.getColumnIndex("nome")).toString());
            if(!c.moveToNext()) break;
        }
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, list);

    user.setAdapter(adapter);

    user.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            reg = position;
            c.moveToPosition(reg);
            String nome = c.getString(c.getColumnIndex("nome"));
            String telefone = c.getString(c.getColumnIndex("telefone"));
            ShowMessage(nome, telefone);
        }
    });

Alterarcontato.java 代码,具有 editTexts 和按钮,然后更改值。

              EditText nomeA = (EditText) findViewById(R.id.etNomeAlter);
            EditText telefoneA = (EditText) findViewById(R.id.etTelefoneAlter);

            final String nomeB = nomeA.getText().toString();
            final String telefoneB = telefoneA.getText().toString();

            String where = "id=?";
            String[] whereArgs = {"nome", "telefone"};

            ContentValues dataToInsert = new ContentValues();                          
            dataToInsert.put("nome", nomeB);
            dataToInsert.put("telefone", telefoneB);

            db.update("contatos", dataToInsert, where, whereArgs);

但如 Contato.java 代码所示,我没有联系人的任何 ID,所以String where = "id=?";有点无效,所以我如何从 Contact.java 获取索引以显示在 Alterarcontato.java 中,所以当我放一些写在里面然后点击按钮,数据库中的值会改变吗?

谢谢你。

4

3 回答 3

1
    setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        reg = position;
        c.moveToPosition(reg);
        String nome = c.getString(c.getColumnIndex("nome"));
        String telefone = c.getString(c.getColumnIndex("telefone"));
        ShowMessage(nome, telefone);

        /// The above method will show the dialog with contact info right..? SO from the dialog you are launching the activity to edit the info. While starting the activity you have to pass the index. Like below :

           Intent intent = new Intent(getApplicationContext(), Alterarcontato.class);
           // the index is the variable which contains the index of the selected contact in your dialog.
       intent.putExtra("key", index);
           startActivity(intent);


    <-- Alterarcontato.java -->

public class Alterarcontato extends Activity {

    private Integer mIndex;


    @Override
    public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          mIndex = getIntent().getExtras().getInt("key");
    }
 }
于 2012-09-21T18:03:54.507 回答
0

你可以试试给定的链接,我希望这可以帮助你

联系人合约 API

于 2012-09-21T17:40:51.297 回答
0

在 Android Developers网站上查看此描述。它提供了良好的分步说明。本质上,您必须创建一个Intent并使用 putExtra() 方法来传递数据。

编辑:另外,看看这个关于使用 onListItemClick() 在 ListActivity 中获取行 ID的类似问题的答案。

于 2012-09-21T18:46:36.987 回答