今、私はユーザー名のリストを表示するアクティビティを持っています。 OKです。しかし、私は左のユーザー名と右のボタン(このボタンは、プログラム的に与えられた電話番号への呼び出しを行います)でカスタムリストビュー項目を表示する必要があること。ネストされたクリック可能なボタンを使用してカスタムリストアイテムでListActivityを作成する方法
私はカスタムアダプタを行う必要があることを知っていますが、私のスキルは低すぎます。また、私が行ったときにそれを使う方法も知らない。
簡単なカスタムアダプタを作成して、1つのテキストビューと1つのボタンでリストアイテムを管理し、そのカスタムアダプタを使用するコードを教えてもらえますか?
アダプタは、この新しいlist_item2.xmlを使用することができるはずです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/friendName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:padding="10dp"
android:textSize="16sp"/>
<Button
android:id="@+id/callButton"
android:layout_alignBaseline="@id/friendName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Call"
android:width="100px"
android:layout_alignParentRight="true"/>
</RelativeLayout>
これは私が今使用してコードです:
list_item.xml:
xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
これはリストアクティブクラス:
public class AllActivity extends ListActivity {
RemoteConnection con; //conexion remota
//private MyDbAdapter mDbHelper;
private List<Friend> friends; //lista de amigos
private List<String> usernames; //lista de usernames de amigos, para rellenar el listview
//private List<Permission> permissions;
//para almacenar la config local de mi app, mostrarme o no en el mapa...
static SharedPreferences settings;
static SharedPreferences.Editor configEditor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings=PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
configEditor = settings.edit();
friends = new ArrayList<Friend>();
usernames = new ArrayList<String>();
//mDbHelper=MyApplication.getDatabaseAdapter();
con = new RemoteConnection();
actualizar();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == 1) {
setResult(1);
finish();
}
}
public void onResume() {
super.onResume();
actualizar();
}
public void actualizar()
{
//friends = con.RetrieveFriends(settings.getString("login",""));
friends = MyApplication.getDatabaseAdapter().retrieveAllFriends();
usernames.clear();
for (int i=0;i<friends.size();i++)
//for (int i=0;i<permissions.size();i++)
{
usernames.add(i,friends.get(i).getFullName());
//if (friends.get(i).getLastPosition()!=null)
// usernames.add(i,friends.get(i).getLastPosition().getpositiontimeFormated());
}
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item3, usernames));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Bundle bundle = new Bundle(); //bundle is like the letter
bundle.putString ("user", friends.get(position).getFullName()); //arg1 is the keyword of the txt, arg2 is the txt
bundle.putString ("email", friends.get(position).getEmail());
bundle.putString ("permission", friends.get(position).getPermission());
Intent i=null;
if (friends.get(position).getPermission().equals("total"))
i = new Intent (AllActivity.this, Locate.class);
else if (friends.get(position).getPermission().equals("perhours"))
i = new Intent (AllActivity.this, LocatePerHours.class);
else
i = new Intent (AllActivity.this, LocatePerDays.class);
i.putExtras(bundle);
startActivity(i);
//startActivityForResult(i, 0);
}
});
}
}
こんにちは、おかげさまで、あなたのコードをコンパイルしようとしています.... android.R.id.text1とは何ですか?listAdapter = new ActivityList(InitialActivity.this、android.R.id.text1、ユーザー名); ??????? – NullPointerException
ああ、残念ですが、ArrayAdapterコンストラクタのデフォルトパラメータです。配列アダプタをインスタンス化する必要があります。このテキストビューでは、インスタンス化時にListAdapterアイテムobjects.toString()が配置されます。リスト内の各項目のビューを作成するには、膨張したビューから取得したテキストビューを使用してデータを配置します。 Like.text =(テキストビュー)convertView.findViewById(R.id.friendName); – Franco
私は、次の行を変更しようとしました:listAdapter = new ActivityList(AllActivity.this、R.id.friendName、usernames); – NullPointerException