Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
1

Кастомизация ListView

09.01.2014, 22:46. Просмотров 2313. Ответов 10
Метки нет (Все метки)

Добрый день.
Перерыл пол инета но так и не нашел нормальный мануал как можно скастомизировать ListView. Прошу не ругаться, реально не смог найти рабочий вариант.
Есть у меня String title и String Text.
Нужно просто вывести их в ListView у которой в item 2 TextView .
Задаче по идее не сложная, но вот нормального решения для новичка найти не могу.
Прошу помощи!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 22:46
Ответы с готовыми решениями:

Кастомизация ListView
Добрый день. Создаю прокручиваемый список, в каждом поле четыре строки,...

Кастомизация ListView
http://imglink.ru/pictures/15-06-14/3d97212a44f93f016eb14cfbf868d023.jpg Как...

Кастомизация ListView и использование Sticky Header
Использую библиотеку https://github.com/beworker/pinned-section-listview И...

Кастомизация индикатора прокрутки в ListView Android Studio
Здравствуйте, вообщем прописал нужные свойства для своего отображения прокрутки...

Кастомизация списков
В инете есть множество примеров изменение внешнего вида ListView с помощью...

10
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 516
09.01.2014, 23:06 2
Нормальный пример: http://startandroid.ru/ru/uroki/vse-...j-adapter.html
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
09.01.2014, 23:35 3
Изучение данного вопроса, я бы посоветовал начать с этого урока http://startandroid.ru/ru/uroki/vse-...ja-spiska.html
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
10.01.2014, 16:10  [ТС] 4
Спс! Хоть это и немножко другое.
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
10.01.2014, 17:15 5
VictorAkira, Нет ничего проще

1. Создаём класс обёртку, чтобы было удобно работать с двумя текстовыми объектами, это нам поможет дальше:

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
public class StringWrapper {
     private String mTitle;
     private String mText;
 
    public StringWrapper(String mTitle, String mText) {
        this.mTitle = mTitle;
        this.mText = mText;
    }
 
    public StringWrapper() {
    }
 
    public String getTitle() {
        return mTitle;
    }
 
    public void setTitle(String mTitle) {
        this.mTitle = mTitle;
    }
 
    public String getText() {
        return mText;
    }
 
    public void setText(String mText) {
        this.mText = mText;
    }
}
2. Не будем пользоваться уже готовыми адаптерами, напишем свой (для адаптера понадобится layout)

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
public class CustomAdapter extends BaseAdapter {
 
    private List<StringWrapper> data = new ArrayList<StringWrapper>();  //Наша коллекция
    private LayoutInflater inflater;
 
    public CustomAdapter(Context mContext) {
        inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //Инфлейтер чтобы получить View из XML
    }
 
    public void setData(List<StringWrapper> data) {
        this.data = data;
    }
 
    @Override
    public int getCount() {
        return data.size();
    }
 
    @Override
    public StringWrapper getItem(int i) {
        return data.get(i);
    }
 
    @Override
    public long getItemId(int i) {
        return i;
    }
 
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        view = inflater.inflate(R.layout.simplt_list_item, null);
        StringWrapper currentItem = getItem(i);
        TextView.class.cast(view.findViewById(R.id.txt_text)).setText(currentItem.getText());
        TextView.class.cast(view.findViewById(R.id.txt_title)).setText(currentItem.getTitle());
        return view;
    }
 
}
и простейший layout (simple_list_item.xml)
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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">
 
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/txt_title"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/txt_text"/>
</LinearLayout>
3. Всё, теперь можно использовать всю эту кашу. Кинем listview на активити:

main.xml

XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/mylist"/>
</LinearLayout>
сама активити:

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
public class MyActivity extends Activity {
 
    private ListView listView;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView = (ListView) findViewById(R.id.mylist);
        initData();
    }
 
    void initData() {
        CustomAdapter customAdapter = new CustomAdapter(this);
        List<StringWrapper> wrapperList = new ArrayList<StringWrapper>();
        wrapperList.add(new StringWrapper("Title1", "Text1"));
        wrapperList.add(new StringWrapper("Title2", "Text2"));
        wrapperList.add(new StringWrapper("Title3", "Text3"));
        wrapperList.add(new StringWrapper("Title4", "Text4"));
        wrapperList.add(new StringWrapper("Title5", "Text5"));
        customAdapter.setData(wrapperList);
        listView.setAdapter(customAdapter);
        customAdapter.notifyDataSetChanged();
    }
 
}
1
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
11.01.2014, 10:33  [ТС] 6
Спасибо!!!!
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
30.01.2014, 12:17  [ТС] 7
Появился Вопрос!
Есть обычное листвью.
Java
1
2
3
4
ListView viewActionsList = (ListView) findViewById(R.id.actions);
String[] values = new String[] {"Мировые новости", "Новости Ватикана", "Новости России","Новости стран СНГ", "Христианские новости", "О нас"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.main_list_item, R.id.product_name, values);
viewActionsList.setAdapter(adapter);
за отображение отвечает обычное текствью.
Как мне поменять фон любого элемента в этом ListView?
Фон должен быть #444756.
То есть к примеру мне надо задать фон 3го элемента.
Как это сделать?
0
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 516
30.01.2014, 15:56 8
Цитата Сообщение от VictorAkira Посмотреть сообщение
Появился Вопрос!
Есть обычное листвью.
Java
1
2
3
4
ListView viewActionsList = (ListView) findViewById(R.id.actions);
String[] values = new String[] {"Мировые новости", "Новости Ватикана", "Новости России","Новости стран СНГ", "Христианские новости", "О нас"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.main_list_item, R.id.product_name, values);
viewActionsList.setAdapter(adapter);
за отображение отвечает обычное текствью.
Как мне поменять фон любого элемента в этом ListView?
Фон должен быть #444756.
То есть к примеру мне надо задать фон 3го элемента.
Как это сделать?
Так?
Java
1
TextView1.setBackgroundColor(0x88444756);
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
30.01.2014, 16:12  [ТС] 9
Я так понимаю 0x88444756 это код цвета в 16ти или 8-чной системе. Это #444756?
У меня есть лист. И мне надо задать любому элементу данный бекграунд.
Я так понимаю это как-то надо пройтись циклом по adapter'у или ListView, узнать номер позиции и задать цвет. Как это сделать?
0
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 516
30.01.2014, 16:21 10
Цитата Сообщение от VictorAkira Посмотреть сообщение
Я так понимаю 0x88444756 это код цвета в 16ти или 8-чной системе. Это #444756?
Да. Впереди 88 вроде как отвечает за непрозрачность.

Цитата Сообщение от VictorAkira Посмотреть сообщение
У меня есть лист. И мне надо задать любому элементу данный бекграунд.
Я так понимаю это как-то надо пройтись циклом по adapter'у или ListView, узнать номер позиции и задать цвет. Как это сделать?
Я почему-то решил, что ваш кастомный ListView заполняется в цикле. Тогда легко можно было бы установить цвет TextView.
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
30.01.2014, 18:42  [ТС] 11
Он не кастомный) Мне только нужна необходимость менять цвет беграунда.
Я написал как он создается:
Java
1
2
3
String[] values = new String[] {"Мировые новости", "Новости Ватикана", "Новости России","Новости стран СНГ", "Христианские новости", "О нас"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.main_list_item, R.id.product_name, values);
viewActionsList.setAdapter(adapter)
Просто в активити приходит переменная с номером элемента, согласно этого должен изменится цвет элемента с данным номером.
0
30.01.2014, 18:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 18:42

Кастомизация SeekBar?
Добрый день! нужно кастомизировать seekbar, знаю (видел) много примеров, но...

Кастомизация Spinner
Пытаюсь изменить внешний вид spinner Сделал для него стиль вида &lt;style...

Кастомизация заголовока окна
Лайауты имеют белый фон и тему по-умолчанию. На версии 4.1 заголовки окон не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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