那么是的。 package ui; import info.dodata.smsforward.R; import java.util.List; import bll.PublicPar; import android.content.Context;
那么是的。那么是的。 package ui; import info.dodata.smsforward.R; import java.util.List; import bll.PublicPar; import android.content.Context; ,android,Android,那么是的。 package ui; import info.dodata.smsforward.R; import java.util.List; import bll.PublicPar; import android.content.Context; import android.content.Intent; import android.provider.ContactsContract; import android.view.LayoutInflater; import androi
package ui;
import info.dodata.smsforward.R;
import java.util.List;
import bll.PublicPar;
import android.content.Context;
import android.content.Intent;
import android.provider.ContactsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class ListNumberAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<String> mListNumber;
private Context mContext;
public ListNumberAdapter(Context context, List<String> listNumber){
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mListNumber=listNumber;
mContext=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListNumber.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.sms_list_phone_number, null);
holder.tvContactName = (TextView) convertView.findViewById(R.id.tvname);
holder.editNumber = (EditText) convertView.findViewById(R.id.editnumber);
holder.btnAddress=(Button)convertView.findViewById(R.id.btnAddress);
holder.btnDelete=(Button)convertView.findViewById(R.id.btnDelete);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.id=position;
holder.tvContactName.setId(position);
holder.editNumber.setId(position);
holder.btnAddress.setId(position);
holder.btnDelete.setId(position);
holder.editNumber.setText(mListNumber.get(position));
holder.btnAddress.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
mContext.startActivity(i);
//mContext.startActivityForResult(i,0); //Don't work
}
});
return convertView;
}
}
class ViewHolder {
int id;
TextView tvContactName;
EditText editNumber;
Button btnAddress;
Button btnDelete;
}
ListNumberAdapter lna = new ListNumberAdapter(this, someListOfStrings);
// In place of Context, use Activity
// We can do this because Context class is
// an ancestor of Activity class
private YourActivity mActivity;
// We'll use this variable to keep track of
// the position of the button that's been clicked
public int positionClicked;
....
....
public ListNumberAdapter(YourActivity act, List<String> listNumber){
mActivity = act;
....
....
}
public class YourActivity extends Activity {
ListNumberAdapter listNumberAdapter;
List<String> listOfNumbers;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = ....;
listOfNumbers = new ArrayList<String>();
// Popuplate 'listOfNumbers'
listNumberAdapter = new ListNumberAdapter(this, listOfNumbers);
listView.setAdapter(listNumberAdapter);
....
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
....
....
// Contact's phone number
String contactNumber = ...;
// Set the String (contactNumber) at the specified position
// Position is obtained by using the variable we defined in
// the adapter
listOfNumbers.set(listNumberAdapter.positionClicked, contactNumber);
// Finally, call notifyDataSetChanged() on your adapter
listNumberAdapter.notifyDataSetChanged();
}
}
holder.btnAddress.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
// Update the 'positionClicked' variable using 'position'
// You will need to mark 'position' as 'final' in
// 'getView's' method signature
positionClicked = position;
// Use mActivity in place of mContext because
// 'startActivityForResult(Intent, int)' is defined in Activity,
// but not in Context
mActivity.startActivityForResult(i,0); // Works now
}
});