Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Список с двумя полями - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Несколько надписей на кнопке http://www.cyberforum.ru/android-dev/thread1599282.html
Можно ли добавить на кнопку многострочный текст с разными шрифтами/размером?
Программирование Android Проверка существования файла Надо проверять наличие файла в директории, где программа создаёт файлы по умолчанию. Файл существует, но exists его не видит. А openFileInput из этого файла содержимое получает. Может exists требует... http://www.cyberforum.ru/android-dev/thread1599265.html
Квадратный Layout Программирование Android
Как создать в XML разметке КВАДРАТНЫЙ layout, вычисление размеров можно задать алгоритмом: ставим height и width == match_parent, если height>width то height = width (layout квадратный и полностью...
Программирование Android Работа с ресурсами проекта
Получаю информацию о ресурсе с помощью Uri.parse("android.resource://test.app.package/drawable/filename"); как получить список имен ресурсов в библиотеке?
Программирование Android Приложение по подсчету площадей фигур http://www.cyberforum.ru/android-dev/thread1598688.html
Дорогие друзья! Может меня смеяться надо мной, но нужна срочно помощь... Написал приложение по подсчету площадей фигур, но оно не работает. Точнее не производит подсчета, оно просто есть......
Программирование Android BackStack и Фрагменты Из активити запускаю Фрагмент А, из Фрагмента А запускаю фрагмент Б, из Фрагмента Б запускаю фрагмент В. Если добавлять каждый фрагмент в BackStack, то по кнопке "назад" мы с фрагмента В перейдём на... подробнее

Показать сообщение отдельно
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,934
Завершенные тесты: 1
03.12.2015, 14:22
Цитата Сообщение от bastrakov Посмотреть сообщение
гы... ну давайте, человеки, придумайте теперь ОДИН экран и скролируемый список в полем ввода во второй колонке
не уверен что я правильно понял вызов, но вот
активити по минимуму, там же класс-модель для секции (имя, цена) и интерфейс...можно оставить так, а можно по разным файлам раскидать
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
 
import java.util.ArrayList;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.sectionRv);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);
        //
        ArrayList<MySection> list = new ArrayList<>(); // создаем список секций
        fillArrayWithRandomPrices(list); // заполняем его ценами и названиями, метод заглушка
        recyclerView.setAdapter(new MyAdapter(list)); // создаем наш адаптер и назначаем его на RecyclerView
    }
 
    private void fillArrayWithRandomPrices(ArrayList<MySection> list) {
        for (int i = 0; i < 25; i++) {
            MySection section = new MySection("Название секции " + i);
            section.setPrice(i * 100);
            list.add(section);
        }
    }
 
}
 
class MySection {
    private String sectionName;
    private int price;
 
    MySection(String name) {
        sectionName = name;
    }
 
    public int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
 
    public String getSectionName() {
        return sectionName;
    }
 
    public void setSectionName(String value) {
        sectionName = value;
    }
}
 
interface ChangeListener {
    void onEditTextValueChanged(int pos, int price);
}


адаптер с холдером
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
 
import java.util.ArrayList;
 
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements ChangeListener {
 
    private final ArrayList<MySection> list;
 
    public MyAdapter(ArrayList<MySection> list) {
        this.list = list;
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);
        return new ViewHolder(v, this);
    }
 
    @Override
    public void onBindViewHolder(ViewHolder holder, int pos) {
        holder.nameTextView.setText(list.get(pos).getSectionName());
        holder.priceEditText.setText(String.valueOf(list.get(pos).getPrice()));
    }
 
    @Override
    public int getItemCount() {
        return list.size();
    }
 
    @Override
    public void onEditTextValueChanged(int pos, int value) {
        list.get(pos).setPrice(value);
    }
 
    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnFocusChangeListener {
        private ChangeListener listener;
        public TextView nameTextView;
        public EditText priceEditText;
 
        public ViewHolder(View v, ChangeListener listener) {
            super(v);
            this.listener = listener;
            nameTextView = (TextView) v.findViewById(R.id.sectionName);
            priceEditText = (EditText) v.findViewById(R.id.sectionPrice);
            priceEditText.setOnFocusChangeListener(this);
        }
 
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            EditText et = (EditText) v;
            int changedPrice = Integer.parseInt(et.getText().toString());
            if (!hasFocus) listener.onEditTextValueChanged(getAdapterPosition(), changedPrice);
        }
    }
}


разметка для активити по минимуму что бы проверить, файл main_activity.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/contentPanel"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">
 
    <android.support.v7.widget.RecyclerView
        android:id="@+id/sectionRv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 
</FrameLayout>

и разметка item-а для RecyclerView файл row.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <EditText
        android:inputType="number"
        android:id="@+id/sectionPrice"
        android:layout_width="100dp"
        android:layout_height="48dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true" />
 
    <TextView
        android:id="@+id/sectionName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/sectionPrice"
        android:layout_toLeftOf="@+id/sectionPrice"
        android:layout_toStartOf="@+id/sectionPrice"/>
 
    <FrameLayout
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:background="#21212121"
        android:layout_height="0.5dp"/>
</RelativeLayout>

тоже не глался за красотой, кому надо сами переделаете
в поле с ценой можно вводить только цифры, проверок на точку не ставил, тоже для самостоятельного изучения

критика приветствуется
4
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru