如何在android网格布局中添加控件,使其根据数据绑定显示在每一行中。
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/favorites_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00"
android:rowCount="2"
android:columnCount="2">
<Button
android:text="Cell 0"
android:layout_row="0"
android:layout_column="0"
android:textSize="14dip" />
<Button
android:text="Cell 1"
android:layout_row="0"
android:layout_column="1"
android:textSize="14dip" />
<Button
android:text="Cell 2"
android:layout_row="1"
android:layout_column="0"
android:textSize="14dip" />
<Button
android:text="Cell 3"
android:layout_row="1"
android:layout_column="1"
android:textSize="14dip" />
</GridLayout>
我希望这是动态的,不指定行号。请帮助。
答案 0 :(得分:0)
不能说Android Binding支持这类事情。目前为止,最好的方法是将GridView与自定义适配器一起使用,或RecycleView与GridLayoutManager一起使用。
以下是GridView适配器的示例:
// create a new Button for each cell
public View getView(int position, View convertView, ViewGroup parent) {
Button btn;
if (convertView == null) {
final Context context = parent.getContext();
btn = new Button(context);
btn.setLayoutParams(new GridView.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT)
);
btn.setPadding(8,8,8,8);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "Button " + view.getTag() + " clicked", Toast.LENGTH_SHORT).show();
}
});
} else {
btn = (Button) convertView;
}
btn.setText("Cell " + position]);
btn.setTag(position);
return btn;
}