Список во Fragment

Интерфейс, диалоги, темы, стили, меню
Ответить
egorka39
Сообщения: 4
Зарегистрирован: 05 сен 2015, 01:05

Список во Fragment

Сообщение egorka39 » 22 сен 2015, 17:21

Помогите разместить список во фрагменте с данными из БД размещенные в layout файле.
layout файл

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/ID" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="NAME"
            android:id="@+id/tvPName"
            android:layout_margin="10dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="UNIT"
            android:id="@+id/tvPUnit"
            android:layout_margin="10dp" />

    </LinearLayout>

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/tvPLastCount" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/etPCount" />

    </LinearLayout>

</LinearLayout>
Что надо написать в коде фрагмента.

ANdriy123456
Сообщения: 138
Зарегистрирован: 27 июн 2014, 01:41

Re: Список во Fragment

Сообщение ANdriy123456 » 23 сен 2015, 19:27

это xml код для одного item?
если нужно отобразить список то как минимум нужен метод (DBHelper), который будет возвращать масив елементом и адаптер для их правильного отображения в виде списка.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Список во Fragment

Сообщение Foenix » 23 сен 2015, 22:36

egorka39 писал(а): Что надо написать в коде фрагмента.
все остальное :mrgreen:
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

egorka39
Сообщения: 4
Зарегистрирован: 05 сен 2015, 01:05

Re: Список во Fragment

Сообщение egorka39 » 24 сен 2015, 16:56

ANdriy123456 писал(а):это xml код для одного item?
если нужно отобразить список то как минимум нужен метод (DBHelper), который будет возвращать масив елементом и адаптер для их правильного отображения в виде списка.
Да. Это код одного item.

xml фрагмента

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/scrollView" >

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView" />
    </ScrollView>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button" />
</LinearLayout>
Есть так же класс одной записи

Код: Выделить всё

public class product {
    String devision;
    String name;
    String mUnit;
    int oldcount;
    int count;

    product(String _devision, String _name, String _mUnit, int _oldcount, int _count) {
        devision = _devision;
        name = _name;
        mUnit = _mUnit;
        oldcount = _oldcount;
        count = _count;
    }
}
код фрагмента

Код: Выделить всё

dbHelper = new DBHelper(this.getActivity());
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        Cursor c = db.query("product", null, null, null, null, null, null);
        ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(c.getCount());
        Map<String, Object> m;
        if (c.moveToFirst()) {
            int idColIndex = c.getColumnIndex("_id");
            int nameColIndex = c.getColumnIndex("name");
            int mUnitColIndex = c.getColumnIndex("nUnit");
            do {
                m = new HashMap<String, Object>();
                m.put(ATTRIBUTE_NAME_IDPRODUCT, c.getInt(idColIndex));
                m.put(ATTRIBUTE_NAME_TEXTPRODUCT, c.getString(nameColIndex));
                m.put(ATTRIBUTE_NAME_TEXTUNIT, c.getString(mUnitColIndex));
                data.add(m);
                Log.d(LOG_TAG, "ID = " + c.getInt(idColIndex) + ", name = " + c.getString(nameColIndex));
            } while (c.moveToNext());
        } else
            Log.d(LOG_TAG, "0 rows");
        c.close();
        dbHelper.close();
getView адаптера

Код: Выделить всё

public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.item_product, parent, false);
        }
        String key = devision + "" + (position+1);
        product p = getProduct(position);
        Log.d(LOG_TAG, Integer.toString(position));
        ((TextView) view.findViewById(R.id.tvPName)).setText(p.name);
        ((TextView) view.findViewById(R.id.tvPUnit)).setText(p.mUnit);
        EditText etCount = (EditText) view.findViewById(R.id.etPCount);
        etCount.setTag(position);
        return view;
    }
Суть в том что я пытаюсь скрестить урок по фрагментам и урок в котором описывалось создание корзины

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

ANdriy123456
Сообщения: 138
Зарегистрирован: 27 июн 2014, 01:41

Re: Список во Fragment

Сообщение ANdriy123456 » 24 сен 2015, 20:09

так нельзя делать

Код: Выделить всё

<ScrollView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/scrollView" > 
 
        <ListView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/listView" /> 
    </ScrollView>
нужны get set методы для полей класа product. Клас должен начинатся с большой буквы - Product
создай пустой конструктор для класа Product.


в коде фрагмента лучше будет использовать масив елементов Product и его переавать в адаптер

Код: Выделить всё

dbHelper = new DBHelper(this.getActivity()); 
........
после всего перечисленого нужно будет передалать адаптер (должен наследовать BaseAdapter) и в методе getView сделать привязку елементов и их значений))

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Список во Fragment

Сообщение doter.ua » 24 сен 2015, 20:34

ListView + wrap_content - месье знает толк в извращениях.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить