-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

主な問題は、すべてを1つのmain.xmlレイアウトに含めていることです。

そして、この問題のために、すべてのリストアイテムに対して戻る/次へボタンが表示されます(実際には、レイアウト全体がリストアイテムとして繰り返されています)。

解決策:

代わりに、ListItemに個別のレイアウトを定義し、そのレイアウトをgetView()メソッド内で拡張してみてください。したがって、2つのXMLレイアウトファイルが必要です。1つはListViewのみを使用したメインデザインで、もう1つはすべてのリストアイテムに必要なビューのみを使用したものです。

たとえば、(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 に答える
2

ViewGroupクラスは、任意の場所にビューを追加するためのさまざまなメソッドを提供し、LayoutParamsクラスを使用して、コンテナーに追加される子ビューに適用されるさまざまな親コンテナークラス固有の属性を渡すことができます。

あなたがグーグルすることができて、簡単に実行できること。

VisibilityGONEを使用してListViewをXMLに配置することも考えられます。

そして、特定のアクショントリガーでそれを表示します。これにより、特定の位置にビューを追加するために必要なさまざまなプログラミング作業を行うことができなくなります。そして、私もこのアプローチの害を感じません。

例えば

<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 に答える