如何在列表下方设置按钮构建文本视图?

时间:2015-10-14 20:56:54

标签: android xml android-layout button textview

我正在制作一个应用程序,用他们的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;
    }
}

2 个答案:

答案 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}}

我希望能帮助你。