список Android внутри макета - PullRequest
0 голосов
/ 11 января 2012

Я работаю над приложением для Android, которое требует отображения списка [таблицы] внутри макета [просмотр]

Я пришел с iPhone dev objC land, и у меня есть приложение, которое показывает таблицу [список] внутри вида [макет]

list/table

Итак, как показать список внутри моего макета и поместить его в указанное место [центр],

пс.Я не нашел список в редакторе графического макета XML, где находится список [таблица]?2. Я провел несколько тестов с представлениями списка, но это представление, которое заменяет представление xml, я хочу, чтобы оно было внутри моего xml,

большое спасибо!

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Да, конечно, вы можете сделать это

1) вам нужно иметь listholder.xml здесь, вы можете поцарапать все что угодно в вашем макете, либо изображение, текстовое представление и т. Д.просто не забудьте добавить ListView внутри него.например:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/head_logo_bg">
</LinearLayout>
<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_label">
    <TextView
        android:id="@+id/city_txt" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_gravity="center"
        android:text="Sydney"
        android:textStyle="bold"
        android:textSize="17sp"/>
</LinearLayout>
<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="40sp">

    <ListView 
    android:id="@android:id/list"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_centerVertical="true"
    android:scrollingCache="false"/>
</LinearLayout>

2) Для создания собственного элемента списка необходимо создать listitem.xml, т.е.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listitemone"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10sp">

    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="vertical">
            <ImageView android:id="@+id/user_image"
                android:layout_width="80px" android:layout_height="80px"
                android:layout_alignParentLeft="true"
                android:layout_marginRight="5px"
                android:src="@drawable/icon"
                />
    </LinearLayout>
    <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="5sp"
        android:orientation="vertical">
            <TextView
                android:id="@+id/date_label"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/date"
                android:textStyle="bold"
            android:textSize="16sp" />
            <TextView
                android:id="@+id/date_value"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignBaseline="@id/date_label"
                android:layout_marginRight="20sp"
                android:textColor="#FFF"
                android:text="MM/dd/YYYY"
                android:textStyle="bold"
            android:textSize="16sp" />
      </RelativeLayout>
</LinerLayout>

3) создайте customAdapter в своей деятельности, это будет выглядеть так:

public class MyListActivity extends ListActivity {

private ArrayList<Yourdata> yourdata = new ArrayList<Youdata>();
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listholder);    
               // yourdata might be array, arraylist etc. 

               MyCustomAdapter listadapter = new MyCustomAdapter(this, R.layout.listitem, yourdata);

          setListAdapter(listadapter);
}

private class MyCustomAdapter extends ArrayAdapter<Yourdata>{
                //this case, i use Yourdata as type
        private ArrayList<Yourdata> items;

        public PreviousAdapter(Context context, int textViewResourceId,
                ArrayList<Yourdata> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }

        @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.listitem, null);
            }
            Yourdata yt = items.get(position);
            if(yt != null){
             // Don't forget to use v.findView...., otherwise, it might force close when run app.
                TextView dateStr = (TextView)v.findViewById(R.id.date_value);

                    dateStr.setText(yt.getDate());
            }   
            return v;
        }



      }


}

PS приведенный выше код может быть не совсем правильным ... просто дать вам представление :) Вот источник о настраиваемом списке (вывозможно, видел это) надеюсь, что это полезно

http://www.vogella.de/articles/AndroidListView/article.html

1 голос
/ 25 мая 2013

Я попробую этот пример, это очень мило.

вы можете получить пример с

http://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text?msg=4567162#xx4567162xx

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