2010-02-02 30 views
5

我有一個應用程序,其主要類擴展ListActivity:實現滑動抽屜內的一個ListView與已經存在一個ListView

public class GUIPrototype extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final Cursor c = managedQuery(People.CONTENT_URI, null, null, null, null); 
     String[] from = new String[] {People.NAME}; 
     int[] to = new int[] { R.id.row_entry }; 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.drawer,c,from,to); 


     setListAdapter(adapter); 
     getListView().setTextFilterEnabled(true); 
    } 
} 

我已經包含在我的XML滑動抽屜,我試圖讓單獨的列表視圖出現在滑動抽屜中。我試圖用inflater填充第二個listview:

View inflatedView = View.inflate(this, R.layout.main, null); 
ListView namesLV = (ListView) inflatedView.findViewById(R.id.content); 
String[] names2 = new String[] { "CS 345", "New Tag", "Untagged" }; 
ArrayAdapter<String> bb = new ArrayAdapter<String>(this, R.layout.main, R.id.row_entry, names2); 
namesLV.setAdapter(bb); 

這個編譯,並運行,但滑動器是完全空白的。我的XML如下:

<SlidingDrawer 
    android:id="@+id/drawer" 
    android:handle="@+id/handle" 
    android:content="@+id/content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_gravity="bottom"> 

    <ImageView 
     android:id="@id/handle" 
     android:layout_width="48px" 
     android:layout_height="48px" android:background="@drawable/icon"/> 

    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@id/content"/> 
</SlidingDrawer> 

我覺得我缺少的重要一步。我沒有發現任何資源對我的問題谷歌搜索,所以任何幫助將不勝感激。

編輯:這是很久以前的問題,我找到的解決方案是重新設計我的佈局。我無法接受答案,因爲我沒有辦法測試它們。

+0

我不能接受這個問題的答案,我感到難過。我們決定爲我們的UI另闢蹊徑,完全避免這個問題,所以我沒有真正的基礎來接受一個答案:( – Parker 2011-12-11 07:00:06

回答

0

它看起來像問題可能是你膨脹一個ListView的新實例,而不是使用你的視圖中的一個。

嘗試讓ListView控件與ListView listView = (ListView) findViewById(R.id.content);

然後適配器適用於它。

+0

任何組合都會導致NullPointerException,遺憾的是。 – Parker 2010-02-06 01:56:02

0

你試過

View inflatedView = View.inflate(this, R.layout.main, null); 
SlidingDrawer sliding=(SlidingDrawer) inflatedView.findViewById(R.id.drawer); 
ListView namesLV = (ListView) sliding.findViewById(R.id.content); 
1

我想我可能已經找到了解決辦法。

以上所有這些解決方案都不適合我。

但是,我所做的是將onClickListener添加到實際視圖中,我從適配器和BAM返回它開始爲我工作。

下面是示例代碼:

五月佈局XML(不完全的....)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/details" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ScrollView 
     android:id = "@+id/scrolling" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <RelativeLayout 
      android:paddingBottom="30dip" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     <ImageView 
      android:id="@+id/listingIcon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true"/> 
     ............ 
    </ScrollView> 
    <SlidingDrawer 
     android:id="@+id/slidingDrawerShowMore" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:topOffset="132dip" 
     android:handle="@+id/handle" 
     android:content="@+id/content"> 
     <LinearLayout 
      android:id="@+id/handle" 
      android:padding = "5dip" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/black"> 
      <TextView 
       android:id="@+id/title" 
       android:layout_alignParentRight="true" 
       android:textSize="14dp" 
       android:layout_below="@id/rate" 
       android:singleLine="true" 
       android:textColor="#3F48CC" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/show_more"/> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@id/content" 
      android:layout_width="match_parent" android:layout_height="match_parent" 
      android:orientation="vertical" android:gravity="center" 
      android:background="@android:color/black"> 
      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:layout_gravity="center_vertical" 
       android:background="@drawable/dark_header"> 
       <TextView 
        android:id="@+id/otherTitle" 
        android:layout_alignParentRight="true" 
        android:layout_below="@id/rate" 
        android:singleLine="true" 
        android:textSize="21px" 
         android:paddingLeft="10px" 
        android:textColor="#EBEBEB" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:gravity="center_vertical" 
        android:layout_weight="0.6" 
        android:text="@string/someString"/> 
       <ProgressBar 
        android:id="@+id/pbar" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        style="@android:style/Widget.ProgressBar.Small" 
        android:layout_gravity="center_vertical"/> 
      </LinearLayout> 
      <ListView 
       android:id="@+id/listview" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"/> 
     </LinearLayout> 
    </SlidingDrawer> 
</RelativeLayout> 

我們處理單擊事件的所有我要做的就是添加onClickListener在我的適配器

public View getView(int position, View convertView, ViewGroup parent) { 
      convertView.setOnClickListener(this); 
} 

就是這樣。問題是我無法讓我的onItemClickListener爲這個ListView工作。但現在點擊監聽器爲我工作。有一天,我很想找出背後的原因。