次の問題で私を助けてください。私は、ユーザーが各連絡先の横にある電話と電子メールボタンをクリックして関連するアクションを実行できるようにする、アプリケーションの一部として連絡先ディレクトリを開発しようとしています。ただし、ディレクトリは正常に表示されます。ListViewのボタンが表示されない
1)appを実行すると、phonebook_row.xmlクラスの呼び出しと電子メールボタンが表示されません。この問題を解決するにはどうすればよいですか?
2)電話番号とメールだけを(「名前:」と「メール」なしで)受け取ったクリック可能なボタンを、それが隣に保存されている文字列からどのようにして電話ダイヤラで開きますか/電子メールアドレスで新しい電子メールを作成しますか? 次のように私のコードは...
Directory.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", "[email protected]", "UK"));
listDirectory.add(new Directory(BitmapFactory.decodeResource(getResources(), R.drawable.jack), "Mr Jack Smith", "3242", "[email protected]", "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:あなたは、次の操作を行うことができ、あなたのアダプタクラスのGETビュー方式で
<?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()。 "Phone Extension:"を付けずに電話番号を取得するための部分文字列(17)。それが助けて欲しい! –