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

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

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

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

31.05.2014, 23:23. Просмотров 512. Ответов 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 мне нужно вставлять другие стринговые массивы. Помогите новичку, буду очень благодарен.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 23:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Несколько string массивов в кастомный адаптер (Программирование Android):

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

Кастомный адаптер listView - Программирование Android
Доброго времени суток, в общем впервые столкнулся с задачей создания кастомного адаптера для listView. Нашел много примеров/статей,...

ListView и кастомный адаптер - Программирование Android
Добрый день ув. Программисты! Нашёл код который заполняет ListView с кастомным адаптером. Но вот проблема ListView создаётся...

Кастомный ImageView - Программирование Android
Прошу сильно не пинать, только учусь. Итак ,суть задачи: есть кастомный класс (public class TouchView extends ImageView), выводящий 2...

Кастомный Toolbar - Программирование Android
Как сделать свой Toolbar. В нем должны быть кнопка назад, меню, фотография и какой-то текст. На фотках думаю видна моя проблема, у меня...

Кастомный EditText - Программирование Android
Как можно внутри EditText установить маску для текста звездочку - * сделать отступы внутри EditText между звездочками например 5dp?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
01.06.2014, 11:14 #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 добавить параметры.
1
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
01.06.2014, 11:25 #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;
    }
}
1
Antihawk
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 44
01.06.2014, 19:57  [ТС] #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
0
Antihawk
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 44
02.06.2014, 21:22  [ТС] #5
Решил проблему как подсказал Rube, только вместо String[] использовал List<String>
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2014, 21:22
Привет! Вот еще темы с ответами:

Кастомный список - Программирование Android
Здравствуйте. Пытаюсь сделать список с помощью RecyclerView. Нужно разделить его на несколько частей, примерно 3-4. Каждая часть должна...

Кастомный EditText - Программирование Android
Подскажите, каким образом можно реализовать EditText как на скрине, при этом редактирование происходить только правой части знаю что...

Кастомный EditText - Программирование Android
КАК сделать вот такой EditText? куда копать ?

AsyncTask<String, String, String> объясните пожалуйста - Программирование Android
При описаний класса наследника AsyncTask мы в угловых скобках указываем три типа данных: 1. Тип входных данных. Это данные которые пойдут...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.06.2014, 21:22
Ответ Создать тему
Опции темы

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