0

を拡張するクラスがあり、 listview_layout.xmlFragmentActivityを含むレイアウト xml ファイルもあります。ListView

<LinearLayout
    android:layout_width="310dip"
    android:layout_height="fill_parent"
    android:background="#000000"
    android:orientation="vertical"
    android:paddingLeft="15dp"
    android:paddingRight="15dp" >

    <ListView
        android:id="@+id/menuList"
        android:layout_width="310dip"
        android:layout_height="wrap_content"
        android:background="#00FFFF"
        android:dividerHeight="2dip" />
</LinearLayout>

<FrameLayout
    android:id="@+id/overlay"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</FrameLayout>

ListViewmenuListのIDに注意してください

私の Java コードから、このリストビューを次のように取得します。

private View getElementFromView(int layout, int element) {
        LayoutInflater inflater = LayoutInflater.from(this);
        View view = inflater.inflate(layout, null);
        return view.findViewById(element);
    }

このメソッドは を返します。これが のインスタンスであるViewかどうかを確認するためにチェックを行います。ViewListView

    View v = getElementFromView(R.layout.listview_layout, R.id.menuList);
    if(v instanceof ListView) {
        Log.v("View: ", "This view is an instance of a ListView"); 
        ListView lv = (ListView)v; 
        String[] listItems = {"Item 1", "Item 2", "Item 3", "Item 4"}; 
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems));
    }

ご覧のとおり、これに を設定したいAdapterので、アイテム 1、アイテム 2 などのテキストListViewを入力する必要があります。ListView

私が理解していないのは、リストビューがまったく表示されない理由です? ListViewがまったく読み込まれていないためだと思いますが、なぜ読み込まれていないのですか?

編集:

このプロジェクトはライブラリとしてマークされていることにも言及する必要があります。これは興味深い部分ですBaseWindow.java

  public class BaseWindow extends SlidingFragmentActivity {
        public void InitializeWindow(Activity act, int layoutResourceId, int menuResourceId, String windowTitle)  {
                    super.setContentView(layoutResourceId); 
                    super.setBehindContentView(R.layout.menu_frame);  
                    this.menuResourceId = menuResourceId; 
                    this.act = act; 
                    initializeSlidingMenu();
                    setWindowTitle(windowTitle); 
         }

         public void initializeSlidingMenu()  {

            this.setSlidingActionBarEnabled(true);
            this.setSlidingActionBarEnabled(true);
            getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
            getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width);
            getSlidingMenu().setShadowDrawable(R.drawable.shadow);
            getSlidingMenu().setMenu(R.layout.listview_layout);
            getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
            getSlidingMenu().setBehindScrollScale(0.25f);

            View v = getElementFromView(R.layout.listview_layout, R.id.menuList);
            if(v instanceof ListView) {
                Log.v("View: ", "This view is an instance of a ListView"); 
                ListView lv = (ListView)v; 
                String[] listItems = {"Item 1", "Item 2", "Item 3", "Item 4"}; 
                lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems));
                //lv.setAdapter(new MenuAdapter(this, menuResourceId));
            }       
        }
    }

このクラスは私のワークスペースの別のプロジェクトから呼び出されます。はい、クラス/プロジェクトをライブラリとして含めました:

public class MainActivity extends BaseWindow {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.InitializeWindow(MainActivity.this, R.layout.activity_main, R.menu.slide_menu, "Home"); 

    }
}

すべてがうまく機能しますが、リストビューには何も入力されていません。これにより、何を達成しようとしているのかについてのアイデアが得られることを願っています。

4

2 に答える 2

2

私が見る限り、ここで作成されたビューView view = inflater.inflate(layout, null);はウィンドウに関連付けられていません。

このレイアウトを画面に配置するには、 setContentView(View v) または何かを呼び出す必要があります

于 2013-02-25T13:57:54.697 に答える
0

ListView は正しく機能しており、すべての項目が表示されています。問題は、FrameLayout が LinearLayout の上にあることです。

于 2013-02-25T13:57:46.333 に答える