我正在制作一个应用程序,用他们的uuid,major和minor值打印信标的屏幕列表。每个值都在xml文件中作为textview进行标记。这工作正常,但我也希望在信标下面设置一个带有四个按钮的表格行。但是当我在我的xml文件中添加一个表格行时,带有按钮的表格会一直显示在我的列表中的每个位置。
示例:http://i.stack.imgur.com/HEvbC.jpg
所以我的问题是如何设置文本视图列表下面的按钮表?
我的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/device_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24dp"/>
<TextView android:id="@+id/device_address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"/>
<TextView android:id="@+id/device_uuid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"/>
<TextView android:id="@+id/device_major"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"/>
<TextView android:id="@+id/device_minor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12dp"/>
<TableRow
android:id="@+id/tableRow5cl"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content">
<Button
android:id="@+id/newscl"
android:layout_height="match_parent"
android:text="News"
android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
<Button
android:id="@+id/loccl"
android:layout_height="match_parent"
android:text="---"
android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
<Button
android:id="@+id/leccl"
android:layout_height="match_parent"
android:text="----"
android:layout_gravity="right" android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
<Button
android:id="@+id/clacl"
android:layout_height="match_parent"
android:text="---"
android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
</TableRow>
</LinearLayout>
列出适配器
private class LeDeviceListAdapter extends BaseAdapter {
private ArrayList<IBeacon> mLeDevices;
private LayoutInflater mInflator;
public LeDeviceListAdapter() {
super();
mLeDevices = new ArrayList<IBeacon>();
mInflator = DeviceScanActivity.this.getLayoutInflater();
}
public void addDevice(IBeacon device) {
if(!mLeDevices.contains(device)) {
mLeDevices.add(device);
}
}
public IBeacon getDevice(int position) {
return mLeDevices.get(position);
}
public void clear() {
mLeDevices.clear();
}
@Override
public int getCount() {
return mLeDevices.size();
}
@Override
public Object getItem(int i) {
return mLeDevices.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view == null) {
view = mInflator.inflate(R.layout.listitem_device, null);
viewHolder = new ViewHolder();
viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
viewHolder.deviceUUID = (TextView) view.findViewById(R.id.device_uuid);
viewHolder.deviceMajor = (TextView) view.findViewById(R.id.device_major);
viewHolder.deviceMinor = (TextView) view.findViewById(R.id.device_minor);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
IBeacon device = mLeDevices.get(i);
final String deviceName = "Kontakt";
if (deviceName != null && deviceName.length() > 0)
viewHolder.deviceName.setText(deviceName);
else
viewHolder.deviceName.setText(R.string.unknown_device);
//viewHolder.deviceAddress.setText(device.getAddress());
viewHolder.deviceUUID.setText(device.getUuid());
viewHolder.deviceMajor.setText(device.getMajor());
viewHolder.deviceMinor.setText(device.getMinor());
return view;
}
}
答案 0 :(得分:0)
好吧,您的TableRow
位于您为每个项目使用的布局中。您必须将TableRow
置于ListView
下方,而不是ListView
项目中。布局。
答案 1 :(得分:0)
当您创建新行时,您正在使用包含该按钮的xml,例如,您应该选择行设计。
rowBeacon.xml(在你的适配器中使用它)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listData"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_height="@dimen/popup_divider"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:dividerHeight="1dp" />
<TableRow
android:id="@+id/tableRow5cl"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content">
<Button
android:id="@+id/newscl"
android:layout_height="match_parent"
android:text="News"
android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
<Button
android:id="@+id/loccl"
android:layout_height="match_parent"
android:text="---"
android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
<Button
android:id="@+id/leccl"
android:layout_height="match_parent"
android:text="----"
android:layout_gravity="right" android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
<Button
android:id="@+id/clacl"
android:layout_height="match_parent"
android:text="---"
android:layout_weight=".3" android:layout_width="wrap_content" android:gravity="center_horizontal"/>
</TableRow>
</LinearLayout>
并在您的活动(setContentView)中使用以下内容:
activity.xml
ListView listData = (ListView) findViewById(R.id.listData);
...Build your adapter...
listData.setAdapter(yourAdapter);
在你的班级(yourClass.java)
{{1}}
我希望能帮助你。