5

メイン クラスが ListActivity を拡張するアプリがあります。

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 にスライディング ドロワーが含まれており、別のリストビューをスライディング ドロワーに表示しようとしています。インフレータを使用して 2 番目のリストビューを作成しようとしています。

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);

これはコンパイルおよび実行されますが、slidedrawer は完全に空白です。私の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>

重要な一歩を踏み外したような気がします。グーグルで問題に関するリソースを見つけられなかったので、助けていただければ幸いです。

編集:これはずっと前の問題であり、私が見つけた解決策はレイアウトを再設計することでした. それらをテストする手段がないため、回答を受け入れることができません。

4

3 に答える 3

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);
}

それでおしまい。問題は、この ListView で onItemClickListener を動作させることができなかったことです。しかし、今はクリックリスナーでうまくいきます。いつの日か、この背後にある理由を見つけたいと思っています。

于 2011-11-17T21:20:29.987 に答える
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);
于 2010-08-23T09:27:01.863 に答える
0

ビューで ListView を使用するのではなく、ListView の新しいインスタンスを膨らませていることが問題のようです。

でListViewを取得してみてくださいListView listView = (ListView) findViewById(R.id.content);

次に、アダプターをそれに適用します。

于 2010-02-03T14:17:01.757 に答える