将项目列表中单击项目的值传递给新活动

时间:2012-08-17 06:36:58

标签: android-activity

我正在尝试将点击我的listactivity的值显示在third.xml上。它有4个editText字段。我想在4个ET字段上显示4列。救命!!! HEre是用于在我的DBAdapter中获取特定记录的代码:

public Cursor getRecord(long rowId) throws SQLException
 {
 Cursor mCursor =
 db.query(true, DATABASE_TABLE, new String[] {ROW_ID,
 KEY_FIRSTNAME, KEY_LASTNAME, KEY_CITY, KEY_STATE},
 ROW_ID + "=" + rowId, null, null, null, null, null);
 if (mCursor != null) {
 mCursor.moveToFirst();
 }
 return mCursor;
    }

然后这是我的Second.java列表活动     package com.dtan.testcontacts;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.AdapterContextMenuInfo;

public class Second extends ListActivity {
public final static String ID_EXTRA="com.dtan.testcontacts._ID";
DBAdapter db = new DBAdapter(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    db.open();
    Cursor c = db.getAllContacts();
    ArrayList<String> columns = new ArrayList<String>();

    int iFirstName = c.getColumnIndex(DBAdapter.KEY_FIRSTNAME);
    int iLastName = c.getColumnIndex(DBAdapter.KEY_LASTNAME);

                for(c.move(0); c.moveToNext(); c.isAfterLast()){
                    String columnstring = c.getString(iFirstName)+ " " + c.getString(iLastName)+"\n";
                    columns.add(columnstring);
                }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, columns);
            setListAdapter(adapter);
            final ListView lv = getListView();
            registerForContextMenu(lv);

                }

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.contextmenu, menu);
    }

@Override
public boolean onContextItemSelected(MenuItem item) {
     final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();


    switch(item.getItemId()){
    case R.id.delete:
        AlertDialog.Builder abuilder = new AlertDialog.Builder(Second.this);
        abuilder.setMessage("Are you sure you want to delete?");
        abuilder.setCancelable(false);
        abuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                Cursor c = db.getAllContacts();
                c.moveToPosition(info.position);
                String id = c.getString(c.getColumnIndex(DBAdapter.ROW_ID));
                db.open();
                db.deleteContact(Long.parseLong(id)); 
                c.close();
                Toast toast = Toast.makeText(Second.this, "Contact Deleted Successfully", 5000);
                toast.show();
                Intent i = new Intent(Second.this, Second.class);
                startActivity(i);

            }
        }); 
        abuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
            });
        AlertDialog alert = abuilder.create();
        alert.show();

        return true;


    case R.id.edit:

        getListView().setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> lv, View cell,
                        int position, long id) {
                    Intent i = new Intent(Second.this, Third.class);
                    i.putExtra("entry_id", position);
                    startActivity(i);
                }
                });
        }
    return super.onContextItemSelected(item);

}

}

最后,这是第三个活动,我想显示点击listactivity的值,以显示在每个edittext上。 xml首先是java代码:          

 <EditText
    android:id="@+id/editText1Third"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="20dp"
    android:clickable="false"
    android:ems="10"
    android:hint="Firstname"
    android:inputType="text"
    android:text="@string/none" />



 <TextView
    android:id="@+id/textView1"
    android:layout_width="110dp"
    android:layout_height="wrap_content"
    android:text="@string/fname" />


 <EditText
    android:id="@+id/editText2Third"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="20dp"
    android:ems="10"
    android:hint="Lastname"
    android:inputType="text"
    android:text="@string/none" />



 <TextView
    android:id="@+id/textView2"
    android:layout_width="74dp"
    android:layout_height="wrap_content"
    android:text="@string/lastname" />



 <EditText
    android:id="@+id/editText3Third"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="20dp"
    android:ems="10"
    android:hint="City"
    android:inputType="text"
    android:text="@string/none" />


 <TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/city" />



 <EditText
    android:id="@+id/editText4Third"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="20dp"
    android:ems="10"
    android:hint="State"
    android:inputType="text"
    android:text="@string/none" >

    <requestFocus />
 </EditText>


 <TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/state" />

 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="64dp" >


    <Button
        android:id="@+id/ButtonUpdateThird"
        android:layout_width="100dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:text="@string/update" />

 </RelativeLayout>

     </LinearLayout>

Third.java

package com.dtan.testcontacts;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.EditText;

public class Third extends Activity {


private DBAdapter db;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
int b = this.getIntent().getExtras().getInt("entry_id");
EditText firstname = (EditText) findViewById(R.id.editText1Third);

db.open();
Cursor c = db.getRecord(b);
firstname.setText(c.getString(1));
db.close();

}
}

0 个答案:

没有答案