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

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

Войти
Регистрация
Восстановить пароль
 
Antihawk
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 44
#1

Несколько string массивов в кастомный адаптер - Android

31.05.2014, 23:23. Просмотров 502. Ответов 4
Метки нет (Все метки)

Есть ListView с кастомным адаптером в отдельном классе. Нашел код на просторах как передавать в кастомный адаптер один string[] . А как сделать чтобы можно было несколько string[] передавать?

Вот так передаю:
Java
1
2
3
String[] values = new String[] {"1"};
ArrayAdapterHomework adapter = new ArrayAdapterHomework(this, values);
listViewHomework.setAdapter(adapter);
Сам класс кастомного адаптера:

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
public class ArrayAdapterHomework extends ArrayAdapter<String> {
        private final Context context;
        private final String[] values;
 
        public ArrayAdapterHomework(Context context, String[] values) {
            super(context, R.layout.listview_homework_adapter, values);
            this.context = context;
            this.values = values;
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.listview_homework_adapter, parent, false);
            TextView textViewHomeworkLeft = (TextView) rowView.findViewById(R.id.textViewHomeworkLeft);
            TextView textViewHomeworkRight = (TextView) rowView.findViewById(R.id.textViewHomeworkRight);
            TextView textViewHomeworkDown = (TextView) rowView.findViewById(R.id.textViewHomeworkDown);
            textViewHomeworkLeft.setText(values[position]);
            textViewHomeworkRight.setText(values[position]);
            textViewHomeworkDown.setText(values[position]);
 
            return rowView;
        }
}
В textViewHomeworkRight и textViewHomeworkDown мне нужно вставлять другие стринговые массивы. Помогите новичку, буду очень благодарен.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 23:23     Несколько string массивов в кастомный адаптер
Посмотрите здесь:

Android Кастомный стиль Button
Кастомный шрифт для всего приложения android eclipse Android
Кастомный шрифт для всего приложения Android
ListView и кастомный адаптер Android
Кастомный заголовок ActionBar Android
Android Кастомный ArrayAdapter для Spinner
Android Кастомный View всегда оказывается слева при landscape ориентации
Android Кастомный список
Кастомный рекламный блок для приложения Android
Установить кастомный thumb на seekBar по цетру Android
Android Краш - кастомный cursoradapter
Кастомный адаптер listView Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.06.2014, 11:14     Несколько string массивов в кастомный адаптер #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не совсем понятно, что значит
Цитата Сообщение от Antihawk Посмотреть сообщение
А как сделать чтобы можно было несколько string[] передавать?
Если я правильно понял, то так:
Java
1
2
3
String[] values = new String[] {"1"};
String[] values1 = new String[] {"2"};
ArrayAdapterHomework adapter = new ArrayAdapterHomework(this, values, values1);
Соответственно в конструкторе ArrayAdapterHomework добавить параметры.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.06.2014, 11:25     Несколько string массивов в кастомный адаптер #3
Antihawk, как бы я сделал:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * Created by Юрий on 01.06.14.
 */
public class Model {
 
    private String homeWorkLeft;
    private String homeWorkRight;
    private String homeWorkDown;
 
    public Model() {
    }
 
    public Model(String homeWorkLeft, String homeWorkRight, String homeWorkDown) {
        this.homeWorkLeft = homeWorkLeft;
        this.homeWorkRight = homeWorkRight;
        this.homeWorkDown = homeWorkDown;
    }
 
    public String getHomeWorkLeft() {
        return homeWorkLeft;
    }
 
    public void setHomeWorkLeft(String homeWorkLeft) {
        this.homeWorkLeft = homeWorkLeft;
    }
 
    public String getHomeWorkRight() {
        return homeWorkRight;
    }
 
    public void setHomeWorkRight(String homeWorkRight) {
        this.homeWorkRight = homeWorkRight;
    }
 
    public String getHomeWorkDown() {
        return homeWorkDown;
    }
 
    public void setHomeWorkDown(String homeWorkDown) {
        this.homeWorkDown = homeWorkDown;
    }
}
2. Делаем свой адаптер, наследующий BaseAdapter:


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
/**
 * Created by Юрий on 01.06.14.
 */
public class SuperAdapter extends BaseAdapter {
 
    private List<Model> data;
 
    public void setData(List<Model> data) {
        this.data = data;
        notifyDataSetChanged();
    }
 
    @Override
    public int getCount() {
        return data != null ? data.size() : 0;
    }
 
    @Override
    public Model getItem(int position) {
        return data.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Model item = getItem(position);
        View rowView = inflater.inflate(R.layout.listview_homework_adapter, parent, false);
        TextView textViewHomeworkLeft = (TextView) rowView.findViewById(R.id.textViewHomeworkLeft);
        TextView textViewHomeworkRight = (TextView) rowView.findViewById(R.id.textViewHomeworkRight);
        TextView textViewHomeworkDown = (TextView) rowView.findViewById(R.id.textViewHomeworkDown);
        textViewHomeworkLeft.setText(item.getHomeWorkLeft());
        textViewHomeworkRight.setText(item.getHomeWorkRight());
        textViewHomeworkDown.setText(item.getHomeWorkDown());
        return rowView;
    }
}
Antihawk
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 44
01.06.2014, 19:57  [ТС]     Несколько string массивов в кастомный адаптер #4
Сделал по аналогии с "values"
Но при попытке запилить во такую строчку:
textViewHomeworkRight.setText(values1[position]);
Приложение вылетает.

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
package ua.potapskiy.mobilestudentplanner;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
 
public class ArrayAdapterHomework extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;
    private final String[] values1;
 
    public ArrayAdapterHomework(Context context, String[] values, String[] values1) {
        super(context, R.layout.listview_homework_adapter, values);
        this.context = context;
        this.values = values;
        this.values1 = values1;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.listview_homework_adapter, parent, false);
        TextView textViewHomeworkLeft = (TextView) rowView.findViewById(R.id.textViewHomeworkLeft);
        TextView textViewHomeworkRight = (TextView) rowView.findViewById(R.id.textViewHomeworkRight);
        TextView textViewHomeworkDown = (TextView) rowView.findViewById(R.id.textViewHomeworkDown);
        textViewHomeworkLeft.setText(values[position]);
        textViewHomeworkRight.setText(values[position]);
        textViewHomeworkDown.setText(values[position]);
        return rowView;
    }
}
Добавлено через 26 минут
YuraAAA, попробовал сделать по вашему примеру, но не совсем понимаю как оно работает, а точнее вообще не понимаю. Можно ли подробно расписать, что, куда и где создавать?
Я создал 2 класса и вставил ваш код, сделал импорты, дальше куда двигаться я не понял и вот еще на, что ругается эклипс:
Java
1
 import java.util.List;
The declared package "" does not match the expected package "ua.potapskiy.mobilestudentplanner"

Java
1
View rowView = inflater.inflate(R.layout.listview_homework_adapter, parent, false);
inflater cannot be resolved
Antihawk
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 44
02.06.2014, 21:22  [ТС]     Несколько string массивов в кастомный адаптер #5
Решил проблему как подсказал Rube, только вместо String[] использовал List<String>
Yandex
Объявления
02.06.2014, 21:22     Несколько string массивов в кастомный адаптер
Ответ Создать тему
Опции темы

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