我使用标准的ListView和Adapter作为 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,itemList)。
列表结构如下: LOOOOOOOOOOOOONG ITEM NAME 1
简短的项目名称2
我需要在text1行添加数量。我可以将它与ITEM NAME连接,所以它看起来像
LOOOOOOOOOOOOONG ITEM NAME1 845
SHORT ITEM NAME2 132
如何将数量推向正确,所以所有这些都将对齐并正确对齐?有人可以帮忙吗?
答案 0 :(得分:1)
您必须使用自定义适配器为每个单元格填充自定义复合视图。
在新的CustomAdapter.java中(Item是您的数据POJO:见下文)
public class CustomAdapter extends BaseAdapter {
private final Context mContext;
private final List<Item> mItemList;
public CustomAdapter(Context context, List<Item> itemList) {
mContext = context;
mItemList = itemList;
}
@Override
public int getCount() {
return mItemList.size();
}
@Override
public Item getItem(int position) {
return mItemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CustomViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.custom_cell, parent, false);
CustomViewHolder holder = new CustomViewHolder();
holder.itemNameTextView = (TextView) convertView.findViewById(R.id.textview_item_name);
holder.itemQuantityTextView = (TextView) convertView.findViewById(R.id.textview_item_quantity);
convertView.setTag(holder);
} else {
holder = (CustomViewHolder) convertView.getTag();
}
Item item = getItem(position);
holder.itemNameTextView.setText(item.getName());
holder.itemQuantityTextView.setText(item.getQuantity());
return convertView;
}
private static class CustomViewHolder {
public TextView itemNameTextView;
public TextView itemQuantityTextView;
}
}
使用custom_cell.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall">
<TextView
android:id="@+id/textview_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/textview_item_quantity"
android:singleLine="true"/>
<TextView
android:id="@+id/textview_item_quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
</RelativeLayout>
这是项目POJO:
public class Item {
private final String mName;
private final String mQuantity;
public Item(String itemName, String itemQuantity) {
mName = itemName;
mQuantity = itemQuantity;
}
public String getName() {
return mName;
}
public String getQuantity() {
return mQuantity;
}
}
通过执行以下操作将其与ListView一起使用:
listView.setAdapater(new CustomAdapter(this, itemList));
答案 1 :(得分:0)
在这一行:
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, itemList)
在res / layout中创建一个新的自定义xml文件[比如名为your_layout_name.xml
],并将上面代码中的android.R.layout.simple_list_item_1
替换为“R.layout.your_layout_name”。在该文件中,输入以下代码:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical|right"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />
Here是原始android.R.layout.simple_list_item_1
布局,在该ArrayAdapter代码中,定义了行的布局:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />
所有需要改变的都是“引力”参数。这定义了文本的对齐方式,您需要添加的所有内容都是“正确的”。
注意:gravity参数通常会在任何视图中对齐其所有内容。比方说,对于LinearLayout,这将尝试对齐其所有子元素。对于TextView,它会对齐文本。