【发布时间】:2017-07-08 08:31:46
【问题描述】:
请您帮我解决以下问题。我正在尝试开发一个联系人目录作为我的应用程序的一部分,它允许用户单击每个联系人旁边的呼叫和电子邮件按钮并执行相关操作。但是目录显示正常:
1) phonebook_row.xml 类中的呼叫和电子邮件按钮在我运行应用程序时未显示。我该如何解决这个问题?
2) 我怎样才能使呼叫和电子邮件可点击按钮从它旁边存储的字符串中获取电话号码和电子邮件(没有“姓名:”和“电子邮件”)并在电话拨号器中打开号码/使用电子邮件地址创建新电子邮件? 我的代码如下……
目录.java:
import android.graphics.Bitmap;
public class Directory {
private Bitmap mAvatar;
private String mName;
private String mPhone;
private String mEmail;
private String mLocation;
public Directory(Bitmap mAvatar, String mName, String mPhone, String mEmail, String mLocation) {
this.mAvatar = mAvatar;
this.mName = "Name: " + mName;
this.mPhone = "Phone Extension: " + mPhone;
this.mEmail = "Email: " + mEmail;
this.mLocation = "Location: " + mLocation;
}
public Bitmap getmAvatar() {
return mAvatar;
}
public void setmAvatar(Bitmap mAvatar) {
this.mAvatar = mAvatar;
}
public String getmName() {
return mName;
}
public void setmName(String mName) {
this.mName = mName;
}
public String getmPhone() {
return mPhone;
}
public void setmPhone(String mPhone) {
this.mPhone = mPhone;
}
public String getmEmail() {
return mEmail;
}
public void setmEmail(String mEmail) {
this.mEmail = mEmail;
}
public String getmLocation() {
return mLocation;
}
public void setmLocation(String mLocation) {
this.mLocation = mLocation;
}
}
DirectoryAdapter.java:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class DirectoryAdapter extends BaseAdapter{
private Context mContext;
private List<Directory> mListDirectory;
public DirectoryAdapter(Context context, List<Directory> list) {
mContext = context;
mListDirectory = list;
}
@Override
public int getCount() {
return mListDirectory.size();
}
@Override
public Object getItem(int i) {
return mListDirectory.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Directory entry = mListDirectory.get(i);
if(view == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
view = inflater.inflate(R.layout.phonebook_row, null);
}
ImageView ivAvatar = (ImageView)view.findViewById(R.id.imgAvatar);
ivAvatar.setImageBitmap(entry.getmAvatar());
TextView tvName = (TextView)view.findViewById(R.id.tvName);
tvName.setText(entry.getmName());
TextView tvPhone = (TextView)view.findViewById(R.id.tvPhone);
tvPhone.setText(entry.getmPhone());
TextView tvEmail = (TextView)view.findViewById(R.id.tvEmail);
tvEmail.setText(entry.getmEmail());
TextView tvLocation = (TextView)view.findViewById(R.id.tvLocation);
tvLocation.setText(entry.getmLocation());
return view;
}
}
ListDirectory.java:
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class ListDirectory extends AppCompatActivity {
private ListView lvDirectory;
private ImageView buttonPhone;
private ImageView buttonEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_directory);
lvDirectory = (ListView)findViewById(R.id.listDirectory);
buttonPhone = (ImageView) findViewById(R.id.ivPhone);
buttonEmail = (ImageView) findViewById(R.id.ivEmail);
List<Directory> listDirectory = new ArrayList<Directory>();
listDirectory.add(new Directory(BitmapFactory.decodeResource(getResources(), R.drawable.johnsmith), "Mr John Smith", "1234", "j.smith@example.com", "UK"));
listDirectory.add(new Directory(BitmapFactory.decodeResource(getResources(), R.drawable.jack), "Mr Jack Smith", "3242", "jack.smith@example.com", "USA"));
DirectoryAdapter adapter = new DirectoryAdapter(this, listDirectory);
lvDirectory.setAdapter(adapter);
}
}
activity_list_directory.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_list_contacts"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.XXXXX.computerscienceinduction.ListDirectory">
<ListView
android:id="@+id/listDirectory"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
phonebook_row.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/imgAvatar"
android:layout_width="70dip"
android:layout_height="70dip"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher"/>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:layout_width="243dp"
android:layout_height="wrap_content">
<TextView android:id="@+id/tvName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_centerHorizontal="true"/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="243dp"
android:layout_height="wrap_content">
<TextView android:id="@+id/tvPhone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
<ImageView android:id="@+id/ivPhone"
android:layout_width="70dip"
android:layout_height="70dip"
android:scaleType="fitCenter"
android:src="@drawable/call_icon"/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="244dp"
android:layout_height="wrap_content">
<TextView android:id="@+id/tvEmail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
<ImageView android:id="@+id/ivEmail"
android:layout_width="70dip"
android:layout_height="70dip"
android:scaleType="fitCenter"
android:src="@drawable/email_icon"/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="243dp"
android:layout_height="wrap_content">
<TextView android:id="@+id/tvLocation"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
【问题讨论】:
-
要显示 ImageViews,请尝试将 TextViews(tvPhone、tvEmail)的 layout_width 替换为“wrap_content”。使用 substring() 方法仅获取字符串的一部分,例如。 entry.getmPhone().substring(17) 获取没有“电话分机:”的电话号码。希望对您有所帮助!
标签: android xml listview android-studio