Android 尝试从未实现图像xml的类访问和设置图像
大家好,我有一个列表视图,其中包含我手机的所有联系人。我正在尝试在我的xml文件中为所有联系人设置一个图像,并尝试设置不需要显示的联系人。我有:Android 尝试从未实现图像xml的类访问和设置图像,android,xml,Android,Xml,大家好,我有一个列表视图,其中包含我手机的所有联系人。我正在尝试在我的xml文件中为所有联系人设置一个图像,并尝试设置不需要显示的联系人。我有: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView = (ListView) findViewById(R.id.l
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.list);
img = (ImageView)findViewById(R.id.img);
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);
while (phones.moveToNext()){
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
ContactBean objContact = new ContactBean();
objContact.setName(name);
objContact.setPhoneNo(phoneNumber); //
list.add(objContact);
}
phones.close();
for (int i = 0; i < SQLiteCrudEmc2.Emc2Contacts.length; i++) {
if(!test(SQLiteCrudEmc2.Emc2Contacts[i].toString()) ){
img = (ImageView)findViewById(R.id.img);
Log.i("eeeeeeee",SQLiteCrudEmc2.Emc2Contacts[i].toString() );
Toast.makeText(ContactListActivity.this, "Numéro retrouvé", Toast.LENGTH_LONG).show();
img.setVisibility(View.INVISIBLE);// My problem here
}
}
ContanctAdapter objAdapter = new ContanctAdapter(
ContactListActivity.this, R.layout.alluser_row,list);
listView.setAdapter(objAdapter);
if (null != list && list.size() != 0) {
Collections.sort(list, new Comparator<ContactBean>() {
@Override
public int compare(ContactBean lhs, ContactBean rhs) {
return lhs.getName().compareTo(rhs.getName());
}
});
AlertDialog alert = new AlertDialog.Builder(
ContactListActivity.this).create();
alert.setTitle("");
} else {
showToast("No Contact Found!!!");
}
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView=(listView)findViewById(R.id.list);
img=(ImageView)findViewById(R.id.img);
Cursor=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null,null);
while(phones.moveToNext()){
字符串名称=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
字符串phoneNumber=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
ContactBean objContact=新ContactBean();
objContact.setName(名称);
objContact.setPhoneNo(电话号码)//
list.add(objContact);
}
电话。关闭();
对于(int i=0;i
我的contats适配器在这里:
public class ContanctAdapter extends ArrayAdapter<ContactBean> {
private Activity activity;
private List<ContactBean> items;
private int row;
private ContactBean objBean;
ImageView img;
ViewHolder holder;
public ContanctAdapter(Activity act, int row, List<ContactBean> items) {
super(act, row, items);
this.activity = act;
this.row = row;
this.items = items;
}
@SuppressWarnings("null")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null){
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(row, null);
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null)||((position + 1) > items.size()))
return view;
objBean = items.get(position);
holder.tvname = (TextView) view.findViewById(R.id.tvname);
holder.tvPhoneNo = (TextView) view.findViewById(R.id.tvphone);
holder.img = (ImageView)view.findViewById(R.id.img);
if (holder.tvname != null && null != objBean.getName()
&& objBean.getName().trim().length() > 0) {
holder.tvname.setText(Html.fromHtml(objBean.getName()));
}
if (holder.tvPhoneNo != null && null != objBean.getPhoneNo()
&& objBean.getPhoneNo().trim().length() > 0) {
holder.tvPhoneNo.setText(Html.fromHtml(objBean.getPhoneNo()));
}
return view;
}
public class ViewHolder {
public TextView tvname, tvPhoneNo;
ImageView img;
}
public class IsInMyContactsList extends Activity {
public IsInMyContactsList(){
}
public Boolean test(String num){
Boolean isOk = false;
Cursor phone1 = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);
while (phone1.moveToNext()){
String phoneNumber = phone1
.getString(phone1
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if(num.equals(phoneNumber))
isOk = true;
}
phone1.close();
return isOk;
}
}
公共类ContanctAdapter扩展了ArrayAdapter{
私人活动;
私人清单项目;
私人int row;
私有联系人bean objBean;
图像视图img;
视窗座;
公共ContanctAdapter(活动法、整数行、列表项){
超级(行动、行、项目);
这个活动=行动;
this.row=行;
这个项目=项目;
}
@抑制警告(“空”)
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=转换视图;
如果(视图==null){
LayoutFlater充气机=(LayoutFlater)活动
.getSystemService(上下文布局\充气机\服务);
视图=充气机。充气(行,空);
holder=新的ViewHolder();
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
if((items==null)| |((position+1)>items.size())
返回视图;
objBean=items.get(位置);
holder.tvname=(TextView)view.findViewById(R.id.tvname);
holder.tvPhoneNo=(TextView)view.findViewById(R.id.tvphone);
holder.img=(ImageView)view.findViewById(R.id.img);
if(holder.tvname!=null&&null!=objBean.getName()
&&objBean.getName().trim().length()>0){
holder.tvname.setText(Html.fromHtml(objBean.getName());
}
if(holder.tvPhoneNo!=null&&null!=objBean.getPhoneNo()
&&objBean.getPhoneNo().trim().length()>0){
holder.tvPhoneNo.setText(Html.fromHtml(objBean.getPhoneNo());
}
返回视图;
}
公共类视图持有者{
公共文本视图tvname,tvPhoneNo;
图像视图img;
}
公共类IsInMyContactsList扩展活动{
公共IsInMyContactsList(){
}
公共布尔测试(字符串数){
布尔值isOk=false;
游标phone1=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null,null);
while(phone1.moveToNext()){
字符串phoneNumber=phone1
.getString(电话1)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
if(num.equals(phoneNumber))
isOk=真;
}
phone1.close();
返回isOk;
}
}
}
我有一个Java.lang.NullPointerExeption请帮助。if(userHasPhoto()){holder.image.setImage(…);}else{holder.image.setVisibility(View.GONE)}您也可以使用View.INVISIBLE使其消失,但仍占用版面空间。必须在适配器中执行此操作,在适配器中将数据绑定到视图(在getView()方法中).好的~@DavidCorsalini让我试试你建议tankx提供的帮助这是我的xml文件我已经为我的所有联系人设置了相同的映像现在我尝试在代码中访问并为我希望的联系人设置为不可见您必须在ContactAdapter中使用的xml中声明映像。在这个xml中,您将有一个用于个人资料pic的图像,一个用于姓名的textview和一个用于电话号码的textview。在适配器中的getView()方法中,您已经在xml中查找图像,因此我猜您已经有了这种布局。