UI android вопрос / проблема с Listview - PullRequest
1 голос
/ 06 апреля 2010

Я пытаюсь воссоздать экран пользовательского интерфейса под названием «Мои места», который используется в приложении Weather Channel. Я бы прикрепил скриншот экрана, но я не могу сделать это здесь. Кажется, они используют два списка, один поверх другого, но я не уверен наверняка. Кто-нибудь может подтвердить это для меня? Если они делают это, как это делается? Я пытался реализовать это, но без полного успеха. Мой верхний список «Добавить место» отображается правильно, но нижний список не будет отображаться / заполняться для меня? Я пока приложу свой код ......

Любая помощь будет принята с благодарностью.

header_row.xml

<?xml version="1.0" encoding="utf-8"?
LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/ic_menu_add" />
LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
TextView
android:id="@+id/caption"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="Add a place"/>
/LinearLayout>
/LinearLayout>

main.xml

?xml version="1.0" encoding="utf-8"?>
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
ListView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
/LinearLayout>
/LinearLayout>

public class ListViewTest extends Activity
{
private static String[] items={"lorem", "ipsum", "dolor",
"sit", "amet", "consectetuer",
"adipiscing", "elit", "morbi",
"vel", "ligula", "vitae",
"arcu", "aliquet", "mollis",
"etiam", "vel", "erat",
"placerat", "ante",
"porttitor", "sodales",
"pellentesque", "augue",
"purus"};

private ListView Header;
private ListView List;
private ArrayList<Caption> caption = null;
private CaptionAdapter adapter;
private ArrayAdapter listAdapter;

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

caption = new ArrayList<Caption>();
Caption cap = new Caption();
cap.setCaption("Add a place");
caption.add(cap);

this.adapter = new CaptionAdapter(this, R.layout.header_row, caption);

Header = (ListView) findViewById(R.id.header);

Header.setAdapter(adapter);

//Log.d("ListViewTest", "caption size is:" + caption.size());

adapter.notifyDataSetChanged();

List = (ListView) findViewById(R.id.list);

listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);

List.setAdapter(listAdapter);

listAdapter.notifyDataSetChanged();

//setListAdapter(new ArrayAdapter<String>(this,
//android.R.layout.simple_list_item_1,
//items));
}

private class CaptionAdapter extends ArrayAdapter<Caption>
{
private ArrayList<Caption> caption;

public CaptionAdapter(Context context, int textViewResourceId, ArrayList<Caption> caption)
{
super(context, textViewResourceId, caption);
this.caption = caption;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;

if (v == null)
{
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.header_row, null);
}

Caption c = caption.get(position);

if (c != null)
{
TextView caption = (TextView) v.findViewById(R.id.caption);

if (caption != null)
{
caption.setText(c.getCaption());
}
}

return v;
}

}
}

1 Ответ

0 голосов
/ 06 апреля 2010

Я не думаю, что страница - это два ListView. Ещё как то так:

<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <Button android:id="@+id/add_a_place"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <ImageView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/weather_logo" />
    </LinearLayout>

    <ListView android:id="@+id/somelist"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
</LinearLayout>

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

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