Кастомный адптер listview

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Кастомный адптер listview

Сообщение antihawk » 01 июн 2014, 19:11

Делаю кастомный адптер listview, нашел пример, но в нем передается только один String[] values;
А мне нужно, чтобы в
textViewHomeworkRight.setText(values[position]);
textViewHomeworkDown.setText(values[position]);
Были другие стринговые массивы.
Сразу извиняюсь за описание, я не очень хорошо разбираюсь.

Вот так передаю:

Код: Выделить всё

	String[] values = new String[] {"1"};
ArrayAdapterHomework adapter = new ArrayAdapterHomework(this, values);
listViewHomework.setAdapter(adapter);

Сам класс кастомного адаптера:

Код: Выделить всё

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;
        }
}

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Кастомный адптер listview

Сообщение Foenix » 01 июн 2014, 19:45

в классе адаптера в конструктор передавай сколько угодно массивов и используй их как угодно внутри.
Или я не поняла вопроса.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: Кастомный адптер listview

Сообщение antihawk » 01 июн 2014, 19:58

Foenix писал(а):в классе адаптера в конструктор передавай сколько угодно массивов и используй их как угодно внутри.
Или я не поняла вопроса.
Думаю, правильно поняли, я пытался передавать вот так(см. ниже), но программа вылетает при такой строчке:
textViewHomeworkRight.setText(values1[position]);

Код: Выделить всё

String[] values = new String[] {"1"}; 
String[] values1 = new String[] {"2"}; 
ArrayAdapterHomework adapter = new ArrayAdapterHomework(this, values, values1); 
listViewHomework.setAdapter(adapter); 

Код: Выделить всё

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(values1[position]); 
            textViewHomeworkDown.setText(values[position]); 
  
            return rowView; 
        } 
}

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Кастомный адптер listview

Сообщение Foenix » 01 июн 2014, 20:38

нет "вылетает" - я такого не понимаю. Лог и строку.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: Кастомный адптер listview

Сообщение antihawk » 01 июн 2014, 20:52

Foenix писал(а):нет "вылетает" - я такого не понимаю. Лог и строку.
а моя конструкция, которую я предоставил, рабочая?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Кастомный адптер listview

Сообщение Foenix » 01 июн 2014, 21:13

не знаю, не смотрела. Тебе долго привести лог, а у меня нет времени смотреть весь код и искать ошибки.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: Кастомный адптер listview

Сообщение antihawk » 01 июн 2014, 21:47

Foenix писал(а):не знаю, не смотрела. Тебе долго привести лог, а у меня нет времени смотреть весь код и искать ошибки.
Надеюсь, это что нужно.

06-01 21:44:09.423: E/AndroidRuntime(28957): FATAL EXCEPTION: main
06-01 21:44:09.423: E/AndroidRuntime(28957): java.lang.ArrayIndexOutOfBoundsException
06-01 21:44:09.423: E/AndroidRuntime(28957): at ua.potapskiy.mobilestudentplanner.ArrayAdapterHomework.getView(ArrayAdapterHomework.java:30)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.AbsListView.obtainView(AbsListView.java:1428)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.ListView.measureHeightOfChildren(ListView.java:1265)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.ListView.onMeasure(ListView.java:1128)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.View.measure(View.java:8553)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.View.measure(View.java:8553)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.View.measure(View.java:8553)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3261)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.View.measure(View.java:8553)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.ViewRoot.performTraversals(ViewRoot.java:915)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.view.ViewRoot.handleMessage(ViewRoot.java:1991)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.os.Handler.dispatchMessage(Handler.java:99)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.os.Looper.loop(Looper.java:150)
06-01 21:44:09.423: E/AndroidRuntime(28957): at android.app.ActivityThread.main(ActivityThread.java:4385)
06-01 21:44:09.423: E/AndroidRuntime(28957): at java.lang.reflect.Method.invokeNative(Native Method)
06-01 21:44:09.423: E/AndroidRuntime(28957): at java.lang.reflect.Method.invoke(Method.java:507)
06-01 21:44:09.423: E/AndroidRuntime(28957): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
06-01 21:44:09.423: E/AndroidRuntime(28957): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
06-01 21:44:09.423: E/AndroidRuntime(28957): at dalvik.system.NativeStart.main(Native Method)

Ошибка в этой строке, как я и говорил.
textViewHomeworkRight.setText(values1[position]);

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Кастомный адптер listview

Сообщение Foenix » 01 июн 2014, 23:03

как вы определили? я не вижу тут куска лога с адресом ошибки.
Но суть понятна. В массиве values1 нет элемента с номером position
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
antihawk
Сообщения: 84
Зарегистрирован: 09 июн 2013, 16:14

Re: Кастомный адптер listview

Сообщение antihawk » 02 июн 2014, 05:24

Foenix писал(а):как вы определили? я не вижу тут куска лога с адресом ошибки.
Но суть понятна. В массиве values1 нет элемента с номером position
Двойной клик по какой-то строчке из лога, не помню по какой.
Решил эту проблему просто заменив String[] на List<String>
Сделал все по анологии и все заработало, странно.

Ответить