Linkify的可点击方法阻止listview点击方法

时间:2011-01-12 22:40:45

标签: java android listview onclick

我有一个listview,每行都有textview,文本与定义的模式相关联,我使用这个小代码使链接的项目可以点击并在我的应用程序中调用另一个活动。但在此之前我正在使用imaview在列表上方,当我添加

时,导航会出现在列表视图上
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    Pattern Matcher = Pattern.compile("pattern here");
    String Url = "sth://";
    Linkify.addLinks(entrySpan, Matcher, Url);

而不是onview方法的listview只是linkfy点击工作,但我必须让他们工作机器人

以下是我用于listview点击方法的代码,但这似乎从未在设置linkify设置移动后触发,我在每次点击后在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 个答案:

答案 0 :(得分:1)

据我所知,如果在listview项目中添加一个按钮,则无法再选择该List项目。然后,您必须使用更复杂的技术创建自定义适配器,并使用getView方法控制每个按钮的setTag和getTag选择。这对初学者来说可能并不容易,但有必要学习。

以下是一个简单的示例:http://androidforbeginners.blogspot.com/2010/03/clicking-buttons-in-listview-row.html

列表被回收也存在问题。这意味着如果屏幕上有10行,当您滚动和第21个等时,第11个将显示被选中或更改...这里getView必须通过使用显式控制每个列表项的布局 if(确定布局的条件){... code ...} else {... code ...}

答案 1 :(得分:0)

我解决了它,只是将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;
                                }
                            }
                        }
                    });