TextView中部分添加超链接,如何处理其他部分跳转关系
2016-06-14 20:00
531 查看
不熟悉在TextView中添加超链接的同学,请参考
超链接跳转
用户可能会有这样的需求,当点击非超链接部分时,是另外一种事件(最常见的为响应ListView onItemClick).当在TextView中添加超链接后,点击TextView中的普通文本就不再有任何响应(当然直接给TextView setOnClick是可以的 ),毫无疑问,咱们也可以在Adapter getView中给TextView添加单击事件。可是明明一个单击onItemClick放在两处就有点难以维护。下面给大家介绍一下我的方法,希望能够起到抛砖引玉的作用。
超链接跳转
用户可能会有这样的需求,当点击非超链接部分时,是另外一种事件(最常见的为响应ListView onItemClick).当在TextView中添加超链接后,点击TextView中的普通文本就不再有任何响应(当然直接给TextView setOnClick是可以的 ),毫无疑问,咱们也可以在Adapter getView中给TextView添加单击事件。可是明明一个单击onItemClick放在两处就有点难以维护。下面给大家介绍一下我的方法,希望能够起到抛砖引玉的作用。
package com.hang.studykeyapp; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView lv = new ListView(this); setContentView(lv); //1.在这里让Adapter获取ListView的引用 SimpleAdapter simpleAdapter = new SimpleAdapter(this, lv); lv.setAdapter(simpleAdapter); simpleAdapter.notifyDataSetChanged(); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(FirstActivity.this, "" + position, Toast.LENGTH_SHORT).show(); } }); } }
<?xml version="1.0" encoding="utf-8"?> <!--item.xml--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/ll" android:descendantFocusability="blocksDescendants" tools:context=".FirstActivity"> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
package com.hang.studykeyapp; import android.content.Context; import android.text.Spannable; import android.text.SpannableString; import android.text.method.LinkMovementMethod; import android.text.style.URLSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; public class SimpleAdapter extends BaseAdapter { private Context context; final String testString = "ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"; private ListView lv; public SimpleAdapter(Context context, ListView lv) { this.context = context; this.lv = lv; } @Override public int getCount() { return 5; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.item, parent, false); viewHolder.ll = (LinearLayout) convertView.findViewById(R.id.ll); viewHolder.tv = (TextView) convertView.findViewById(R.id.tv); viewHolder.tv.setMovementMethod(LinkMovementMethod.getInstance()); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tv.setText(testString); viewHolder.tv.append(getUserlink("guchuuhang", "201011111")); viewHolder.tv.append(testString); final View copiedConvertView = convertView; viewHolder.tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //2.当用户点击TextView非超链接部分时,调用listView onItemClick if (lv != null) { lv.getOnItemClickListener().onItemClick(lv, copiedConvertView, position, 0); } } }); return convertView; } class ViewHolder { LinearLayout ll; TextView tv; } public SpannableString getUserlink(String userName, String userId) { SpannableString ss = new SpannableString(userName); URLSpan urlSpan = new URLSpan("gch://" + userId); ss.setSpan(urlSpan, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return ss; } }
相关文章推荐
- firefox的超链接点击去除扩大的难看虚线的解决方法
- JavaScript获取页面中超链接数量的方法
- asp.net GridView中超链接的使用(带参数)
- php中将网址转换为超链接的函数
- ToolTip 通过Js实现代替超链接中的title效果
- 给html超链接设置事件不使用href来完成跳
- 给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
- JavaScript asp.net 获取当前超链接中的文本
- php 正则 过滤html 的超链接
- JS给超链接加确认对话框的方法
- 巧方法 JavaScript获取超链接的绝对URL地址
- 超链接的禁用属性Disabled使用示例
- javascript实现类似超链接的效果
- 超链接怎么正确调用javascript函数
- DataGrid中实现超链接的3种方法
- 使用javascript提交form表单方法汇总
- JavaScript返回网页中超链接数量的方法
- JS实现网页上随机产生超链接地址的方法
- jsp超链接中文乱码的解决方法
- ASP.NET自动为URL加上超链接的代码