我有一个显示ListView的活动,ListView由TextEdit和Button组成。 该按钮用于选择联系人的电子邮件并将其放入TextEdit。
按钮的监听器是在我的自定义数组适配器中创建的,从这个方法我调用活动来选择这样的联系人:
Intent intent =new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Email.CONTENT_URI);
((Activity) v.getContext()).startActivityForResult(intent, MainActivity.act_pick_contact_mail);
我已经在我的活动中创建了onActivityResult方法,我可以收到用户选择的电子邮件,但我不知道按钮被按下的位置。
这是我写的代码: 你知道我该怎么办?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//Pick an email
if(requestCode==MainActivity.act_pick_contact_mail){
try{
if(resultCode==Activity.RESULT_OK){
Uri uri=data.getData();
Cursor emailCur=getContentResolver().query(uri,null, null, null,null);
emailCur.moveToFirst();
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));
//Change the first item, but I need to know the real position
contactos.set(0, new Contacto(email));
adapter.notifyDataSetChanged();
emailCur.close();
}}
catch(Exception e){
Toast.makeText(getBaseContext(), "Email wasn't found", Toast.LENGTH_SHORT).show();
e.getCause();
}
}
}
提前致谢。
编辑:解决了使用getter在adaper中创建属性的问题。
答案 0 :(得分:2)
我在这里看到两个选项。
一,保存活动的class属性中的位置。然后在onActivityResult
返回时引用它。
二,使用该位置作为您的请求代码。例如,用位置替换MainActivity.act_pick_contact_mail
。然后在onActivityResult
中假设请求代码> = 0有效。