Кликабельный метод Linkify блокирует метод clickview - PullRequest
2 голосов
/ 13 января 2011

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

    textView.setMovementMethod(LinkMovementMethod.getInstance());
    Pattern Matcher = Pattern.compile("pattern here");
    String Url = "sth://";
    Linkify.addLinks(entrySpan, Matcher, Url);

Вместо метода просмотра списков onClick работают только ссылки, но я должен заставить их работать.

Вот код, который я использую для метода щелчка по списку, но он, кажется, никогда не срабатывает после установки движения набора ссылок, я переключаюсь назад и вперед между Vısıble и Gone после каждого щелчка.

getListView().setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                if(Entry.totalPageNumber>1){
                    //if no more than one page exist no need to navigate

                    if(show == false){
                        findViewById(R.id.back).setVisibility(View.VISIBLE);
                        findViewById(R.id.forward).setVisibility(View.VISIBLE);
                        findViewById(R.id.start).setVisibility(View.VISIBLE);
                        findViewById(R.id.last).setVisibility(View.VISIBLE);
                        show=true;
                    }else if(show==true){
                        findViewById(R.id.back).setVisibility(View.GONE);
                        findViewById(R.id.forward).setVisibility(View.GONE);
                        findViewById(R.id.start).setVisibility(View.GONE);
                        findViewById(R.id.last).setVisibility(View.GONE);
                        show=false;
                    }
                }
            }
        });

Как решить эту проблему ??

Ответы [ 2 ]

1 голос
/ 13 января 2011

Насколько я знаю, если вы добавите кнопку в элемент списка, вы больше не сможете выбрать этот элемент списка.Затем вам нужно использовать более сложные методы создания собственного адаптера и использовать метод getView для управления выбором с помощью setTag и getTag для каждой кнопки.Это может быть непросто для новичка, но это необходимо для изучения.

Вот один простой пример для начала: http://androidforbeginners.blogspot.com/2010/03/clicking-buttons-in-listview-row.html

Существует также проблема с перезаписью списка.Это означает, что если на экране 10 строк, 11-ая будет отображаться для выбора или изменения при прокрутке и 21-й и т. Д. ... здесь getView должен явно управлять макетом каждого элемента списка, используя условие if (которое определяетраскладка) {... код ...} еще {... код ...}

0 голосов
/ 13 января 2011

Я решил, просто переместил реализацию onClickListener в мой метод getView, который рисует textview и напрямую применяет onClickListener к textView, и, наконец, оба они работают счастливо

TextView textView = (TextView) mView.findViewById(R.id.entryRowTextView);


textView.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            // TODO Auto-generated method stub
                            // TODO Auto-generated method stub
                            if(Entry.totalPageNumber>1){
                                //if no more than one page exist no need to navigate
                                Log.d(EKSI, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                                if(show == false){
                                    findViewById(R.id.back).setVisibility(View.VISIBLE);
                                    findViewById(R.id.forward).setVisibility(View.VISIBLE);
                                    findViewById(R.id.start).setVisibility(View.VISIBLE);
                                    findViewById(R.id.last).setVisibility(View.VISIBLE);
                                    show=true;
                                }else if(show==true){
                                    findViewById(R.id.back).setVisibility(View.GONE);
                                    findViewById(R.id.forward).setVisibility(View.GONE);
                                    findViewById(R.id.start).setVisibility(View.GONE);
                                    findViewById(R.id.last).setVisibility(View.GONE);
                                    show=false;
                                }
                            }
                        }
                    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...