Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing a listview inside a sliding drawer with a listview already present

I have an app whose main class extends 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);
    }
}

I have a sliding drawer included in my XML, and I'm trying to get a separate listview to appear in the sliding drawer. I'm trying to populate the second listview using an inflater:

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

This compiles, and runs, but the slidingdrawer is completely blank. My XML follows:

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

I feel like I'm missing a vital step. I haven't found any resources on my problem by Googling, so any help would be greatly appreciated.

Edit: This was for a problem a long time ago, and the solution I found was to just redesign my layout. I am unable to accept an answer as I don't have the means to test them.

like image 752
Parker Avatar asked Nov 14 '22 13:11

Parker


1 Answers

I Suppose I might have found the solution.

All these above solutions did not worked for me.

But then, what I did was add onClickListener to actual view which I return from adapter and BAM it started working for me.

Here is the sample code:

May layout XML (Not complete one....)

<?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>

Now to handle click events all I had to do was to add onClickListener in my adapter

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

That's it. Problem is I could not get my onItemClickListener working for this ListView. But right now on click listener works for me. One day I would love to find out reason behind this.

like image 87
anargund Avatar answered Dec 30 '22 16:12

anargund