我正在尝试在我的 listView 中间添加一个按钮。理想情况下,该按钮将拆分 listView,然后它将继续,但如果这不可能,我可以在 listView 的一行内使用一个按钮。例如。我的列表视图将有第一行(图像+文本)、第二行(图像+文本)、按钮,然后继续列表视图。
我写了以下代码。这会在 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 对象。我创建了两个构造函数,一个用于按钮,一个用于图像和文本。
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;
}
}
在我的活动中,我将以下两行添加到数组中,稍后我的适配器将使用它来创建 listView(我传递给它的 ArrayList 被更改为数组)
user_data.add(new UserAccountData(icon, "title,"type"));
user_data.add(new UserAccountData("show Password","button"));
a) 有没有办法拆分 listView 和中间并添加一个按钮?并继续相同的listView?因为我当前的解决方案试图在一行中添加一个按钮。
b)任何想法为什么我实际上也在图标中添加一个空按钮,标题类型行?我在实际的 listView 上得到图标、标题、空按钮
非常感谢你
更新:找到两个博客 http://logc.at/2011/10/10/handling-listviews-with-multiple-row-types/ 和 http://android.amberfog.com/?p=296 ,但仍然不没有运气。将不胜感激一些更深入的帮助