Java Linkify&x27;s可单击方法块列表视图单击方法
您好,我有一个列表视图,每行有一个文本视图,其中有一个文本链接和定义的模式,我使用这个小代码使链接项目可以点击,并调用我的应用程序中的另一个活动。但在此之前,我使用列表上方的imaview使导航显示在列表视图上,当我添加Java Linkify&x27;s可单击方法块列表视图单击方法,java,android,listview,onclick,Java,Android,Listview,Onclick,您好,我有一个列表视图,每行有一个文本视图,其中有一个文本链接和定义的模式,我使用这个小代码使链接项目可以点击,并调用我的应用程序中的另一个活动。但在此之前,我使用列表上方的imaview使导航显示在列表视图上,当我添加 textView.setMovementMethod(LinkMovementMethod.getInstance()); Pattern Matcher = Pattern.compile("pattern here"); String Url = "
textView.setMovementMethod(LinkMovementMethod.getInstance());
Pattern Matcher = Pattern.compile("pattern here");
String Url = "sth://";
Linkify.addLinks(entrySpan, Matcher, Url);
代替了listview的onClick方法,只需点击链接就可以了,但我必须让它们在机器人上工作
这是我用于listview单击方法的代码,但在设置linkify set movement后似乎从未触发,我在Vısıble和Goe之间来回切换,每次单击后都会消失
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;
}
}
}
});
getListView().setOnItemClickListener(新的OnItemClickListener()){
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
//TODO自动生成的方法存根
如果(条目.总页码>1){
//如果不存在多个页面,则无需导航
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);
findviewbyd(R.id.forward).setVisibility(View.GONE);
findViewById(R.id.start).setVisibility(View.go);
findViewById(R.id.last).setVisibility(View.GONE);
show=false;
}
}
}
});
如何解决这个问题?我解决了它,只是将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;
}
}
}
});
据我所知,如果在listview项目中添加按钮,则无法再选择该列表项目。然后,您必须使用更复杂的技术来创建自定义适配器,并使用getView方法控制每个按钮的setTag和getTag选择。这对初学者来说可能不容易,但学习是必要的 下面是一个简单的例子: 列表回收也有一个问题。这意味着,如果屏幕上有10行,当你滚动到第11行和第21行时,第11行也将显示为选中或更改,以此类推。。。在这里,getView必须使用 if(决定布局的条件){…code…}else{…code…}