如何实现listview中item的自定义布局

2025-06-22 16:52:49
推荐回答(1个)
回答1:

Listview使用自定义布局,则需要创建layout,并引用layout。以下为示例代码:

创建layout文件

android:layout_width="fill_parent"
android:layout_height="wrap_content">

android:text="button"
android:layout_width="wrap_content"
android:layout_height="wrap_content">



2.layout面含有的textview是想要展示内容的地方。那么构建ArrayAdapter时,应该这样写:
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.online_user_list_item, R.id.online_user_list_item_textview);

3.ArrayAdapter并且重写getView方法。代码:
public class UserListAdapter extends ArrayAdapter {
private int resourceId;
public UserListAdapter(Context context, int textViewResourceId, List objects) {
super(context, textViewResourceId, objects);
this.resourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
User user = getItem(position);
LinearLayout userListItem = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resourceId, userListItem, true);
TextView tvUsername = (TextView)userListItem.findViewById(R.id.tv_user_list_username);
TextView tvAskedNum = (TextView)userListItem.findViewById(R.id.tv_user_list_askednum);
TextView tvLastMsg = (TextView)userListItem.findViewById(R.id.tv_user_list_lastmsg);
tvUsername.setText(user.getUsername());
tvAskedNum.setText(String.valueOf(user.getAskedNum()));
tvLastMsg.setText(user.getLastMsg());
return userListItem;
}
}