listViewの中央にボタンを追加しようとしています。理想的には、ボタンはlistViewを分割し、その後も続行しますが、これが不可能な場合は、listViewの行内のボタンで問題ありません。例えば。私のリストビューには、1行目(画像+テキスト)、2行目(画像+テキスト)、ボタンがあり、リストビューに進みます。
私は次のコードを書きました。これにより、listViewの行にボタンが追加されますが、途中で、listViewのすべての行に空のボタン(テキストが表示されたボタン)も追加されます。また、中心の重力設定が機能していません。
私のxml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView android:id="@+id/imgUserIcon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:gravity="center_vertical"
android:scaleType="fitStart" />
<Button
android:id="@+id/buttonShowHide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/showHide" />
<TextView android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
/>
</LinearLayout>
私のアダプター
public class UserAdapter extends ArrayAdapter<UserAccountData> {
Context context;
int layoutResourceId;
User data[] = null;
public UserAdapter(Context context, int layoutResourceId,
UserAccountData[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
UserAccountDataHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new UserAccountDataHolder();
holder.imgIcon = (ImageView) row.findViewById(R.id.imgUserIcon);
holder.txtTitle = (TextView) row.findViewById(R.id.txtTitle);
holder.showHide = (Button) row.findViewById(R.id.buttonShowHide);
row.setTag(holder);
} else {
holder = (UserHolder) row.getTag();
}
User user = data[position];
holder.txtTitle.setText(user.title);
holder.imgIcon.setImageResource(user.icon);
holder.showHide.setText(user.buttonName);
return row;
}
static class UserHolder {
ImageView imgIcon;
TextView txtTitle;
Button showHide;
}
}
行のJavaオブジェクト。ボタン用と画像とテキスト用の2つのコンストラクターを作成しました。
public class UserAccountData {
public int icon;
public String type;
public String title;
public CharSequence buttonName;
public UserAccountData(){
super();
}
// for image and text
public UserAccountData(int icon, String title, String type) {
super();
this.icon = icon;
this.title = title;
this.type = type;
}
// for button
public UserData(CharSequence buttonName, String type) {
super();
this.buttonName = buttonName;
this.type = type;
}
public void setType(String type){
this.type = type;
}
}
私のアクティビティでは、次の2つの行を配列に追加しています。これは、後でアダプターがlistViewの作成に使用します(配列に変更されるArrayListを渡します)。
user_data.add(new UserAccountData(icon, "title,"type"));
user_data.add(new UserAccountData("show Password","button"));
a)listViewと中央を分割してボタンを追加する方法はありますか?同じlistViewを続行しますか?私の現在のソリューションは、行にボタンを追加しようとしているためです。
b)アイコン、タイトルタイプの行に実際に空のボタンも追加している理由はありますか?実際のlistViewにアイコン、タイトル、空のボタンが表示されます
どうもありがとうございます
更新:2つのブログ http://logc.at/2011/10/10/handling-listviews-with-multiple-row-types/ と http://android.amberfog.com/?p=296を見つけまし たが、それでも運がない。もう少し詳細なヘルプをいただければ幸いです