學習android作為業餘興趣,邊學邊做了個小應用。昨天用到了listview長按事件,彈出下拉式功能表,把這作為個知識點,供以後學慣用。
首先,假設listview已經有資料,不管是從sqlite中擷取還是程式內固定的值,下面直接給出長按事件的寫法。
activiy中:
//ListView lvjzw;// listview顯示列表
lvjzw.setOnCreateContextMenuListener(lvjzwOnCreateContextMenuListener);
/**
* 長按彈出下拉式功能表 ,此事件中可彈出下拉框
*/
OnCreateContextMenuListener lvjzwOnCreateContextMenuListener = new OnCreateContextMenuListener()
{
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
menu.setHeaderTitle("共用給連絡人");//標題
menu.add(0, 1, 0, "使用簡訊發送給好友");//下拉式功能表
// menu.add(0, 2, 0, "彈出式菜單2");
}
};
/**
* 長按菜單響應函數 並擷取選中的listview行內容
*/
@Override
public boolean onContextItemSelected(MenuItem item)
{
ContextMenuInfo info = item.getMenuInfo();
AdapterView.AdapterContextMenuInfo contextMenuInfo = (AdapterContextMenuInfo) info;
// 擷取選中行位置
int position = contextMenuInfo.position;
// 擷取問題內容
question = dataRecordList.get(position).getQuestion();
Toast.makeText(JzwActivity.this,question+"===",Toast.LENGTH_SHORT).show();
/********************************到此為止,即可擷取到長按那一列listview中的值*****************************************************************************************/
// 調用手機連絡人,傳送簡訊
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Contacts.Phones.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);
return super.onContextItemSelected(item);
}
長按某一行,彈出下拉式功能表,
點擊後,在Toast中顯示選中內容