-1

我有这样的设计

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.20"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/backbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Back" />

    <Button
        android:id="@+id/nextbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="next" />
</LinearLayout>
<!-- the two columns part -->

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="0.80"
    android:orientation="horizontal" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="0.80" 
        android:id="@+id/submenue"
        >

         <!-- this will be the menue list -->
         <ListView
            android:id="@+id/MyHiddenListView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone" 
            >



            </ListView>

            <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/contents"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="First Name" />


    </LinearLayout>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="0.20" 
        android:id="@+id/mainLayout"
        >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="second Name" />
    </LinearLayout>
</LinearLayout>

我将以下代码添加到下一个按钮,以便它显示并填充列表

this.next = (Button)this.findViewById(R.id.nextbutton);
        this.next.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                String[] MainMenue =  new String[] { "aaaa", "bbb", "ccc"};

                menueview = (ListView)findViewById(R.id.MyHiddenListView);
                menueview.setVisibility(ListView.VISIBLE);
                menueview.setAdapter(new submenueadapter(getApplicationContext(), MainMenue));

            }
        });

适配器类是

包 com.appnetics;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class submenueadapter   extends ArrayAdapter<String> {

    private final Context context;
    private final String[] values;


    public submenueadapter(Context context,String[] objects)
    {


        super(context, R.layout.main, objects);
        this.context = context;
        this.values = objects;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.main, parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.contents);

        textView.setText(values[position]);

        // Change icon based on name
        String s = values[position];

        System.out.println(s);


        return rowView;
    }
}

问题是列表中填充了数组加上页面中的其他控件(2个按钮)

单击下一步之前 在此处输入图像描述 的布局 单击 在此处输入图像描述 任何想法以解决该问题后的布局

最好的问候最好的问候

4

2 回答 2

2

ViewGroup 类确实提供了各种方法来在任何地方添加视图,并且使用 LayoutParams 类,您可以传递各种父容器类特定属性以应用于要添加到容器中的子视图。

你可以用谷歌搜索并且很容易做到。

我还可以考虑将一个 ListView 放在 XML 中,而 Visibility GONE 。

并在特定的动作触发器上使其可见。这将阻止我执行在特定位置添加视图所需的各种编程工作。而且我也不觉得这种方法有任何伤害。

例如

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

        <Button
            android:id="@+id/backbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Back" />
        <ListView
            android:id="@+id/MyHiddenListView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone" />
</Linearlayout>

在 .java 文件中

btnBack = (Button)findViewById(R.id.backbutton);
myListView = (ListView)findViewById(R.id.MyHiddenListView);

btnBack.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
      myListView.setVisibility(ListView.VISIBLE);
      myListView.setAdaptor(new MyListViewAdaptor());
   }
});

希望能帮助到你 :)

于 2012-05-10T08:02:04.870 回答
2

主要问题是您将所有内容都包含在一个main.xml布局中。

由于这个问题,您将获得每个列表项的返回/下一步按钮(实际上整个布局正在重复为列表项)。

解决方案:

相反,尝试为 ListItem 定义单独的布局,并在 getView() 方法中扩展该布局。所以必须有 2 个 XML 布局文件,一个只有 ListView 的主要设计,另一个只有你想要的每个列表项的视图。

例如,(1) main.xml (2) row_item.xml

现在,您只需要在膨胀布局的代码中进行更正:

View rowView = inflater.inflate(R.layout.row_item, parent, false);  // row_item.xml is inflated here
于 2012-05-10T10:30:46.887 回答