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

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

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

Собственный адаптер на основе ArrayAdapter - Программирование Android

26.01.2016, 16:53. Просмотров 605. Ответов 17

Хочу реализовать, чтобы при keydown элемент списка менял цвет фона, а при keyup возвращался в исходное положение, и в то же время выполнял действие которое прописано в методе onListItemClick в активити, которое использует этот адаптер.

Код адаптера
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
43
44
45
46
public class MyAdapter<T> extends ArrayAdapter<T> {
    SharedPreferences s;
    Context contextall;
 
    public MyAdapter(Context context, int resource, T[] objects) {
        super(context, resource, objects);
        contextall = context;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        S.pomfv(parent, contextall);
        TextView tv = (TextView) super.getView(position,convertView,parent);
        S.pom(tv, contextall);
        S.pomtv(tv, contextall);
        tv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                s = PreferenceManager.getDefaultSharedPreferences(contextall);
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    String color1 = s.getString("menfon", "#FFFFFF");
                    if (S.isHEX(color1)) {
                        view.setBackgroundColor(Color.parseColor(color1));
                    } else {
                        color1 = "#FFFFFF";
                        view.setBackgroundColor(Color.parseColor(color1));
                    }
                } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                    String color1 = s.getString("menfon2","#000000");
                            if (S.isHEX(color1)){
                                view.setBackgroundColor(Color.parseColor(color1));
                            }else{
                                color1 = "#000000";
                                view.setBackgroundColor(Color.parseColor(color1));
                            }
                }
 
                return true;
            }
        });
        return tv;
    }
 
 
 
}


Часть кода активити
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
 protected void onListItemClick(ListView l, View v, int position, long id) {
        switch (position) {
            case 0:
                Intent in0 = new Intent(Pre_Pre_Two_Activity.this,Pre_One_Pre_Activity.class);
                in0.putExtra("pre",0);
                startActivity(in0);
                break;
            case 1:
                Intent in1 = new Intent(Pre_Pre_Two_Activity.this,Pre_One_Pre_Activity.class);
                in1.putExtra("pre",1);
                startActivity(in1);
                break;
            case 2:
                Intent in2 = new Intent(Pre_Pre_Two_Activity.this,Pre_One_Pre_Activity.class);
                in2.putExtra("pre", 2);
                startActivity(in2);
                break;
            case 3:
                Intent in3 = new Intent(Pre_Pre_Two_Activity.this,Pre_One_Pre_Activity.class);
                in3.putExtra("pre",3);
                startActivity(in3);
                break;
 
 
        }
    }


То есть если я меняю onToucListener, то метод onListItemClick в активити не вызывается и нельзя перейти в другое активити. Класс MyAdapter используется во многих классах, поэтому я не могу просто в нём прописать переход. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2016, 16:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Собственный адаптер на основе ArrayAdapter (Программирование Android):

Собственный ArrayAdapter - Программирование Android
Доброго времени суток. Пытаюсь написать собственный адаптер для строкового типа: titles = new ArrayList&lt;String&gt;(messages.size());...

ACTION_SEND в ArrayAdapter - Программирование Android
Ребят,вопрос такой, есть GridView с картинками, к нему отдельным классом подключен Adapter. Необходимо по клику картинки делать ACTON_SEND....

Отличия в работе ArrayAdapter - Программирование Android
Что то не понятное с ArrayAdapter на Android 2.3, У меня есть EditText в списке, меняя значение одного, меняются все. На Android &gt;= 4.0 все...

Привязка класса к ArrayAdapter - Программирование Android
Добрый день. Есть класс, содержащий опросы private static class Polls { private final int _Id; private final...

Обновление данных в ArrayAdapter - Программирование Android
Добрый день. Есть созданный ArrayAdapter. Он добавляется в listView, при достижении конца списка происходит получение информации и...

ArrayAdapter и много заморочек - Программирование Android
Сам ArrayAdapter String data = new String{&quot;Текст 1&quot;,&quot;Текст 2&quot;}; ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;&gt;(this, ...

17
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
27.01.2016, 19:13  [ТС] #16
Ладно. Сделал через dispatchTouchEvent.
Приводу полный код родительского класса активити.
Код
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
43
44
45
46
public class MyListActivity extends ListActivity{
 
 
    View[] globview = new View[20];
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        for (int i = 0; i < 20;i++){
            if (l.getChildAt(i) != null){
                globview[i] = l.getChildAt(i);
            }
        }
        SharedPreferences s;
        s = PreferenceManager.getDefaultSharedPreferences(this);
        String color1 = s.getString("menf","#00BFFF");
        if (S.isHEX(color1)){
            v.setBackgroundColor(Color.parseColor(color1));
        }
        else{
            color1 ="#00BFFF";
            v.setBackgroundColor(Color.parseColor(color1));
        }
    }
 
 
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_UP){
            super.dispatchTouchEvent(ev);
            SharedPreferences s;
            s = PreferenceManager.getDefaultSharedPreferences(this);
            String color1 = s.getString("menf","#00BFFF");
            ListView lv = (ListView) getCurrentFocus();
            for (int a = 0;a < lv.getCount();a++){
                    if (S.isHEX(color1)){
                        lv.getChildAt(a).setBackgroundColor(Color.parseColor(color1));
                    }
                    else{
                        color1 ="#00BFFF";
                        lv.getChildAt(a).setBackgroundColor(Color.parseColor(color1));
                    }
            }
            return true;
        }
        return super.dispatchTouchEvent(ev);
    }
}

Не по теме:


Как-то так. Спасибо всем за помощь)



Добавлено через 2 минуты

Не по теме:

По идее это подсвечивание нажатий кнопок в ArrayAdapter.

0
Pablito
27.01.2016, 19:13
  #17

Не по теме:

код ужасен, я бы все вытер и начал заново
и метод, который я дал, он не для этого

0
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
27.01.2016, 19:20  [ТС] #18

Не по теме:

Я только начинаю. Поэтому он и плох. Но мне очень интересно, как ты бы осуществил нажатие кнопок в ArrayAdapter?



Добавлено через 1 минуту

Не по теме:

И чтобы они ещё подсвечивались, и чтобы если пользователь нажал на кнопку, потом протянул пальцем на другой участок экрана, где нет кнопки, то она сменила цвет на изначальный.

0
27.01.2016, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 19:20
Привет! Вот еще темы с ответами:

Кастомный ArrayAdapter для Spinner - Программирование Android
Создал свой адаптер. Привязал его к списку Spinner. Получил идентификатор выбранной записи. Ну вроде бы как получается в каждом элементе...

ArrayAdapter вылет на clear и add - Программирование Android
Приветствую! Вылет на clear. Если эту строку закоментить то вылет на add. В чем может быть проблема? import java.io.File; ...

Как правильно настроить ArrayAdapter? - Программирование Android
Создаю своё первое приложение, потому вопрос новичка. Статья, которой я руководствовался - поверхностная, потому во многом пришлось...

Выкидывает NullPointerException при заполнении данных через ArrayAdapter - Программирование Android
Заполняю данные из массива Food.foods с помощью ArrayAdapter в ListView макета activity_food_category.xml. При заполнении выкидывает ошибку...


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

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

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