自定义布局(动态实现listview添加表格布局)
时间: 2023-07-07 11:40:33 浏览: 39
实现自定义布局可以使用自定义的Adapter,并在getView()方法中动态添加表格布局。
首先,在res/layout文件夹下新建一个xml文件,命名为table_item.xml,用于定义表格布局的样式。例如:
```xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1,2">
<TableRow>
<TextView
android:text="Name"
android:padding="5dp"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:text="Age"
android:padding="5dp"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:text="Gender"
android:padding="5dp"
android:textSize="18sp"
android:textStyle="bold" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/tv_name"
android:padding="5dp"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_age"
android:padding="5dp"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_gender"
android:padding="5dp"
android:textSize="16sp" />
</TableRow>
</TableLayout>
```
然后,在Java代码中创建一个自定义的Adapter,重写getView()方法,动态添加表格布局:
```java
public class TableAdapter extends ArrayAdapter<Person> {
private int resource;
public TableAdapter(Context context, int resource, List<Person> objects) {
super(context, resource, objects);
this.resource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(resource, parent, false);
}
TextView tvName = convertView.findViewById(R.id.tv_name);
TextView tvAge = convertView.findViewById(R.id.tv_age);
TextView tvGender = convertView.findViewById(R.id.tv_gender);
Person person = getItem(position);
tvName.setText(person.getName());
tvAge.setText(String.valueOf(person.getAge()));
tvGender.setText(person.getGender());
return convertView;
}
}
```
最后,在Activity中设置ListView的Adapter为自定义的Adapter即可:
```java
public class MainActivity extends AppCompatActivity {
private ListView listView;
private List<Person> personList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list_view);
personList = new ArrayList<>();
personList.add(new Person("Tom", 20, "Male"));
personList.add(new Person("Lucy", 18, "Female"));
personList.add(new Person("Jack", 22, "Male"));
TableAdapter adapter = new TableAdapter(this, R.layout.table_item, personList);
listView.setAdapter(adapter);
}
}
```