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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
#1

Кастомизация ListView - Программирование Android

09.01.2014, 22:46. Просмотров 2166. Ответов 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 (Программирование Android):

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

Кастомизация ListView - Программирование Android
http://imglink.ru/pictures/15-06-14/3d97212a44f93f016eb14cfbf868d023.jpg Как реализовать кастомизацию списка, как в офф приложении...

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

Кастомизация Spinner - Программирование Android
Пытаюсь изменить внешний вид spinner Сделал для него стиль вида <style name="spinner"> <item...

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

Кастомизация прогресс-бара - Программирование Android
Добрый день. Каким образом засунуть в прогресс, вместо колора изображение? Код прилагаю: <layer-list...

10
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 451
09.01.2014, 23:06 #2
Нормальный пример: http://startandroid.ru/ru/uroki/vse-...j-adapter.html
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 523
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
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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 / 1
Регистрация: 24.08.2013
Сообщений: 451
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 / 1
Регистрация: 24.08.2013
Сообщений: 451
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
Привет! Вот еще темы с ответами:

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

Кастомизация табов в actionbar - Программирование Android
необходимо чтобы табы выглядели примерно как на приложенном фото, как это можно сделать

Кастомизация стандартных вьювов - плагиат или нет? - Программирование Android
Вопрос совершенно не относящийся к программированию, но вроде уместный для данной ветки. Допусти есть стандартный вьюв Holo Light, он меня...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...


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

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

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