2
listview項目longpress打開contextmenu並執行3選項查看,編輯,刪除。視圖是點擊比獲得ID到選定的項目在列表視圖和意圖通過下一個活動...... ????如何獲取選定列表視圖項中的id以打開contextmenu和意圖通過下一個活動。
我告訴ü代碼...
Broker_Management.java下面的代碼意圖通傳下一個活動不是通過putextra值(長按選擇項ID)..和下一個活動是開放的(Broker_Details_View。 JAVA)比getextra得到的值id獲取數據到sqlite的...
public class Broker_Management extends ListActivity implements OnClickListener { ListAdapter adapter; DBUtil db; Button btn_add_broker,btn_back; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.broker_management); //CREATE A DATABASE db=new DBUtil(Broker_Management.this); broker_list_display(); btn_add_broker=(Button) findViewById(R.id.btn_add_broker); btn_back=(Button) findViewById(R.id.btn_back); btn_add_broker.setOnClickListener(this); btn_back.setOnClickListener(this); } public void onClick(View arg0) { switch (arg0.getId()){ case R.id.btn_add_broker: startActivity(new Intent(Broker_Management.this,Add_New_Broker.class)); break; case R.id.btn_back: Intent goback = new Intent(Broker_Management.this, Admin_Home.class); startActivity(goback); break; } } public void broker_list_display(){ Cursor c; db.open(); String[] from = new String[]{"broker_name","city"}; int[] to = new int[] {R.id.broker_name,R.id.broker_city}; c=db.get_broker_list(); //String[] columns = new String[]{c.getColumnName(1),c.getColumnName(2)}; adapter=new SimpleCursorAdapter(Broker_Management.this, R.layout.itemlist, c, from, to); setListAdapter(adapter); db.close(); registerForContextMenu(getListView()); } public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle("Context Menu"); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.broker_context_menu, menu); } public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); Cursor cursor; switch(item.getItemId()) { case R.id.view: Toast.makeText(this, "View is Peform", Toast.LENGTH_SHORT).show(); Intent intentview = new Intent(Broker_Management.this, Broker_Details_View.class); cursor = (Cursor) adapter.getItem(info.position); intentview.putExtra("KEY_1", cursor.getInt(cursor.getColumnIndex("_id"))); startActivity(intentview); return true; case R.id.update: Toast.makeText(this, "Update is Perform", Toast.LENGTH_SHORT).show(); Intent intentupdate = new Intent(Broker_Management.this, Broker_Details_Update.class); cursor = (Cursor) adapter.getItem(info.position); intentupdate.putExtra("KEY_1", cursor.getInt(cursor.getColumnIndex("_id"))); startActivity(intentupdate); return true; case R.id.delete: Toast.makeText(this, "Delete Activity Perform", Toast.LENGTH_SHORT).show(); Intent intentdelete = new Intent(Broker_Management.this, Broker_Details_Update.class); cursor = (Cursor) adapter.getItem(info.position); intentdelete.putExtra("KEY_1", cursor.getInt(cursor.getColumnIndex("_id"))); startActivity(intentdelete); return true; default: return super.onContextItemSelected(item); } } }
Broker_Details_View.java
public class Broker_Details_View extends Activity { int id; DBUtil db; TextView tv_broker_name,tv_city, tv_contact_no, tv_email_id, tv_broker_login_id, tv_joining_date; Button btn_update, btn_delete, btn_close, btn_menu, btn_back; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.broker_details_view); /* id=getIntent().getIntExtra("KEY_1", 0); db=new DBUtil(Broker_Details_View.this); tv_broker_name = (TextView) findViewById(R.id.tv_broker_name); tv_city = (TextView) findViewById(R.id.tv_city); tv_contact_no = (TextView) findViewById(R.id.tv_contact_no); tv_email_id = (TextView) findViewById(R.id.tv_email_id); tv_joining_date = (TextView) findViewById(R.id.tv_joining_id); db.open(); Cursor c = db.get_broker_details(id); if(c.getCount() == 1){ c.moveToFirst(); tv_broker_name.setText(c.getString(c.getColumnIndex("broker_name"))); tv_city.setText(c.getString(c.getColumnIndex("city"))); tv_contact_no.setText(c.getString(c.getColumnIndex("contact_no"))); tv_email_id.setText(c.getString(c.getColumnIndex("email_id"))); tv_broker_login_id.setText(c.getString(c.getColumnIndex("join_date"))); } db.close(); */ } }
DBUtil.java
package com.me.DBUtil; import java.util.Date; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.text.format.DateFormat; public class DBUtil extends Activity { private static final String DATABASE_NAME = "EMS"; private static final int DATABASE_VERSION = 1; //BROKER table content private static final String DBTABLE_BROKER = "Broker"; private static final String B_BROKER_ID = "_id"; private static final String B_LOGIN_ID = "login_id"; private static final String B_BROKER_NAME = "broker_name"; private static final String B_ADDRESS = "address"; private static final String B_CITY = "city"; private static final String B_CONTACT_NO = "contact_no"; private static final String B_EMAIL_ID = "email_id"; private static final String B_DOB = "dob"; private static final String B_AVTAR = "avtar"; private static final String B_JOIN_DATE = "join_date"; public Cursor get_broker_list() { String[] columns =new String[]{B_BROKER_ID,B_BROKER_NAME,B_CITY}; Cursor c =ourDatabase.query(DBTABLE_BROKER, columns, null, null, null, null, null); return c; } public Cursor get_broker_details(int id) { String[] columns =new String[]{B_BROKER_ID,B_BROKER_NAME,B_CITY,B_CONTACT_NO,B_EMAIL_ID,B_JOIN_DATE}; String con=""+ B_BROKER_ID + "=" + id; Cursor c =ourDatabase.query(DBTABLE_BROKER, columns, con, null, null, null, null); return c; }
PLZ解決這個問題,如何讓在選擇列表視圖項的ID打開文本菜單和意圖直通通過接下來的活動...... ???????
很好的解決方案,另一種方法是讓你的活動實現OnItemClickListener並覆蓋方法 – 2013-06-12 12:23:34