【问题标题】:Make clickable textview in android [closed]在android中制作可点击的textview [关闭]
【发布时间】:2026-01-09 05:05:02
【问题描述】:

通过这种方式,我显示了来自 DB 的 ID。

TextView setNote = (TextView) findViewById(R.id.idNotes);
setNote.setText("");  //empty current text

//DB connection
DatabaseHandler db = new DatabaseHandler(this);


List<Contact> contacts = db.getAll();

for (Contact cn : contacts) 
{
  Integer id = cn.getID();

  setNote.append(id.toString()+"\n");        
}

结果

12

35

42

现在我想让这些 id 可点击,这样当用户点击每个 id 时,它将打开一个与该 id 对应的单独活动。我该怎么做?

【问题讨论】:

  • 你应该在TextView上设置点击监听
  • 我想他是在问如何让每个 Id 单独点击而不是整个 TextView。在问题上有很大的不同。也许需要澄清这个问题以反映这一意图。

标签: android textview clickable


【解决方案1】:

如果你想让整个 TextView 可以点击,那么你可以像其他人提到的那样添加一个 onClickListener 。

但是,如果您想让每个要打印的 ID 都可以单独点击(即每个 ID 都放在其他地方),则必须创建添加自己的 Span 类。

这是一个示例实现。首先从ClickableSpan扩展定义你自己的跨度:

static class MyClickableSpan extends ClickableSpan {  
    OnClickListener mListener;  

    public MyClickableSpan(OnClickListener listener) {  
        mListener = listener;  
    }  

    @Override  
    public void onClick(View widget) {  
        mListener.onClick(widget);  
    }  
}  

接下来,您要为您打印的每个 id 创建一个SpannableString

for (Contact cn : contacts) {
   String id = cn.getID().toString();
   SpannableString mySpan = new SpannableString(id+"\n")  
   mySpan.setSpan(new MyClickableSpan(new OnClickListener() {  
       public void onClick(View v) {  
          //Do whatever you want when clicked here! <----  
       }  
     }), 0, id.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
   setNote.append(mySpan);        
}

最后,要启用点击,您需要将LinkMovementMethod 添加到您的TextView,如下所示:

// Put this at the end after finishing your for-loop
setNote.setMovementMethod(LinkMovementMethod.getInstance());

这将允许您将每个 ID 设为可点击,如果您愿意,每个 ID 都会转到单独的 Activity

【讨论】:

  • 非常感谢,你明白我想要什么。 public void onClick(View widget) { mListener.onClick(widget); } 在这里发生了错误。 DialogInterface.OnClickListener 类型中的 onClick(DialogInterface, int) 方法不适用于参数(View)
  • 您需要导入View.onClickListener。相反,您导入了 DialogInterface.OnClickListener 这是错误的。确保导入正确的接口
  • 你现在已经完美了。当用户点击一个ID时,新课程将打开,但如何知道点击了哪个ID?
  • 只需将id 声明更改为final String id = cn.getID().toString(); 当您将其设为final 时,您将能够在onClick() 方法中使用它
  • 朋友,对不起,打扰了。 public void onClick(View v) { Intent redir = new Intent(this, notInfo.class);开始活动(redir);我无法通过这种方式重定向(显示此消息:构造函数 Intent(new View.OnClickListener(){}, Class) 未定义
【解决方案2】:

你需要使用一个 onClickListener(),http://developer.android.com/reference/android/view/View.OnClickListener.html

如果您希望每个 ID 触发不同的操作,他们需要在自己的视图中显示自己的关联操作。您不能对视图中的不同文本执行不同的操作。

【讨论】:

  • 数据库中有 3 行。苹果,梨,黄瓜。我想向用户展示它们。当用户点击苹果时,苹果的信息会显示,如果点击梨,梨的信息会显示,如果点击黄瓜,黄瓜的信息会在 info.class 中显示,我会在 info.class 中获得 id,我会知道用户选择了哪一个。
【解决方案3】:

使用方法TextView.setOnClickListener(this) 并在您的活动(类)中实现OnClickListener

【讨论】:

  • 数据库中有 3 行。苹果,梨,黄瓜。我想向用户展示它们。当用户点击苹果时,苹果的信息会显示,如果点击梨,梨的信息会显示,如果点击黄瓜,黄瓜的信息会在 info.class 中显示,我会在 info.class 中获得 id,我会知道用户选择了哪一个。
【解决方案4】:

你可以这样做:

TextView setNote = (TextView) findViewById(R.id.idNotes);
setNote.setOnClickListener(this);


@Override
public void onClick(View v) {
         new Thread(new Runnable() {
            public void run() {
             Intent monIntent = new Intent(this,CibleClass.class);
             startActivity(monIntent);
            }
          }).start();  

       }

【讨论】:

  • 通过这种方式我可以知道哪个 id 用户点击(触摸)?
  • 该代码检测到 textview 上的点击,我想知道哪个用户 ID 进行了点击,您必须以编程方式创建一个新的 textview,本教程将帮助您:adilatwork.blogspot.fr/2011/07/…
  • 数据库中有 3 行:书本、复印本、铅笔。当用户点击书本时,它会重定向到 newClass.class 并显示有关图书的用户信息,当点击字帖时,它将重定向做 newClass.class 并显示我想要的字帖的信息。
【解决方案5】:
setNote.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

Intent i=new Intent(this,new_activity_name_you_want_to_start.class);
startActivity(i);



       }
});

要调用类而不是活动,只需在内部创建该类的对象

public void click(View v)

按照自己的方式编写代码

【讨论】:

  • 数据库中有 3 行。苹果,梨,黄瓜。我想向用户展示它们。当用户点击苹果时,苹果的信息会显示,如果点击梨,梨的信息会显示,如果点击黄瓜,黄瓜的信息会显示在 info.class 中,我会在 info.class 中获得 id,我会知道用户选择了哪一个。
  • setNote.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i=new Intent(this,info.class); startActivity(i); } })公共类信息扩展活动{ onCreate(){ if(apple){ setContentView(Apple.xml"); }else if(pear){ setContentView(Pear.xml"); }
【解决方案6】:
setNote.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
            Intent i=new Intent(MainActivity.this,newactivity.class);
           startActivity(i);

       }
});

【讨论】:

  • 通过这种方式我可以知道哪个 id 用户点击(触摸)?
  • 没有,但是你可以设置标签,setNote.setTag(id.toString());并通过 -str myId=v.getTag(); 在 onClick 上获取它,这将返回您的 ID。
  • DB 中有 3 行:Book、Copybook、pencil。我想向用户展示它们。当用户点击书籍时,它将重定向到 newClass.class 并显示有关书籍的用户信息,当单击字帖时,它将重定向执行 newClass.class 并显示有关字帖的信息,当用户单击铅笔时,它将重定向到铅笔和有关铅笔的信息将会呈现。我想要这个。
【解决方案7】:

SetOnclickListner。用于点击任意View

【讨论】:

    最近更新 更多