Реализация списка в скользящем ящике с уже представленным списком - PullRequest
5 голосов
/ 02 февраля 2010

У меня есть приложение, основной класс которого расширяет 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, и я пытаюсь получить отдельный просмотр списка для отображения в скользящем ящике. Я пытаюсь заполнить второй просмотр списка, используя инфлятор:

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>

Я чувствую, что пропустил важный шаг. Я не нашел ресурсов по моей проблеме от Google, поэтому любая помощь будет принята с благодарностью.

Редактировать: Это было для проблемы давным-давно, и решение, которое я нашел, состояло в том, чтобы просто изменить мой макет. Я не могу принять ответ, потому что у меня нет средств для их проверки.

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Полагаю, я мог бы найти решение.

Все вышеперечисленные решения у меня не сработали.

Но затем я добавил 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. Но сейчас слушатель щелчка работает для меня. Однажды я хотел бы выяснить причину этого.

0 голосов
/ 23 августа 2010

Вы пробовали

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);
0 голосов
/ 03 февраля 2010

Похоже, проблема может заключаться в том, что вы надуваете новый экземпляр ListView, а не используете его в своем представлении.

Попробуйте получить ListView с помощью ListView listView = (ListView) findViewById(R.id.content);

Затем примените к нему свой адаптер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...