Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将已单击项目的索引放入另一个活动?_Android_Database_Listview - Fatal编程技术网

Android 如何将已单击项目的索引放入另一个活动?

Android 如何将已单击项目的索引放入另一个活动?,android,database,listview,Android,Database,Listview,我有一个活动(Contato),它显示了我数据库中联系人的列表视图(banco>contatos>nome,telefone(数据库>表格>行))。单击联系人信息时,会出现一个对话框,向我显示信息和3个按钮(OK/Alterar/Delete),当我点击Alterar时,它会将我发送到另一个活动(Alterarcontato),我有2个编辑文本和1个按钮。 因此,当我被发送到Alterarcontato活动时,我仍然希望得到我单击的联系人的索引,以便我可以更改其值(使用db.update) ja

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

java代码列表视图,显示对话框并具有其索引。

但是如Contato.java代码所示,我没有联系人的任何ID,因此
字符串where=“ID=?”
有点无效,那么如何从Contact.java获取索引以显示在Alterarcontato.java中呢?因此,当我在其中写入一些内容并按下按钮时,数据库中的值会发生变化


谢谢。

您可以尝试给定的链接,希望这对您有所帮助

setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
reg=位置;
c、 运动定位(reg);
字符串nome=c.getString(c.getColumnIndex(“nome”);
字符串telefone=c.getString(c.getColumnIndex(“telefone”);
ShowMessage(nome、telefone);
///上面的方法将显示带有联系人信息的对话框,对吗?因此,从该对话框中启动活动以编辑信息。启动活动时,必须通过索引。如下所示:
Intent Intent=新的Intent(getApplicationContext(),Alterarcontato.class);
//索引是包含对话框中所选联系人索引的变量。
intent.putExtra(“键”,索引);
星触觉(意向);
公共类AlteraContato扩展活动{
私有整数mIndex;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mIndex=getIntent().getExtras().getInt(“键”);
}
}
查看一下“站点”。它提供了很好的分步说明。本质上,您必须创建并使用putExtra()方法传递数据


编辑:另外,请看一下如何使用onListItemClick()在ListActivity中获取行ID。

您可以通过Intent传递联系人的索引,并在AlterArcContato activity中检索索引。我该如何做?您能给我举个例子吗?如果有人已经知道并解释它,效果会更好(如果你能解释这意味着你理解:D)不要通过索引您可以从原始联系人id中获取id constanti需要一天的时间来创建它,这样您就可以很容易地理解它我怎么做
原始联系人id
Alterarcontato.java
索引显示创建变量的错误,getExtras说:
方法getExtas(String)未定义类型Intent
并说添加一个Intent,当我单击代码时,它会更改为:
索引=((Object)getIntent()).getExtas(“key”)
private mIndex,令牌“mIndex”上的错误
语法错误,此令牌后应为VariableDeclarator,但mIndex不是变量吗?以及onCreate(Bundle savedInstanceState)中的错误`AlterArcOnAto类型中的onCreate方法只能设置public/protected/private中的一个`mIndex是整型变量,请将其声明为全局变量。在AlterArcOnAto活动的onCreate()方法中初始化该变量。请参阅更新的代码。
    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);
        }
    });
              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);
    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");
    }
 }