Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中创建可点击的文本视图_Android_Textview_Clickable - Fatal编程技术网

在android中创建可点击的文本视图

在android中创建可点击的文本视图,android,textview,clickable,Android,Textview,Clickable,通过这种方式,我显示了来自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 :

通过这种方式,我显示了来自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");        
}
TextView设置注释=(TextView)findViewById(R.id.idNotes);
setNote.setText(“”)//清空当前文本
//数据库连接
DatabaseHandler db=新的DatabaseHandler(此);
List contacts=db.getAll();
用于(联系人cn:联系人)
{
整数id=cn.getID();
setNote.append(id.toString()+“\n”);
}
结果

十二,

三十五

42


现在我想让这些id可以单击,这样当用户单击每个id时,它将打开一个与此id对应的单独活动。我如何才能做到这一点?

您需要使用onClickListener()


如果您希望每个ID触发不同的操作,则它们需要在自己的视图中,并具有自己的关联操作。视图中的不同文本不能有不同的操作

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

您可以这样做:

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);

       }
});
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();  

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

public void click(View v)

如果你想让整个文本视图都可以点击,那么你可以像其他人提到的那样添加一个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);        
}


这将允许您在每个ID进入单独的
活动时单击每个ID
,如果这是您想要的

SetOnclickListner
。用于单击任何
视图

您应该在文本视图上设置click listener可能重复我想他在问如何使每个Id可以单独单击,而不是整个文本视图。在这个问题上有很大的不同。也许这个问题需要澄清以反映这一意图。通过这种方式,我将能够知道用户在哪个id上单击(触摸)?否,但您可以通过设置标签,setNote.setTag(id.toString());并通过-str myId=v.getTag();,在onClick上获取它;,这将返回您的ID。DB中有3行:Book、Copybook、pencil。我想将它们显示给用户。当用户单击book时,它将重定向到newClass.class并显示用户关于book的信息;当用户单击copybook时,它将重定向到do newClass.class并显示关于copybook的信息;当用户单击pencil时,它将重定向到pencil,并显示关于pencil的信息。通过这种方式,我可以知道用户在哪个id上点击(触摸)?代码检测点击文本视图,我想知道用户在哪个id上点击你必须以编程方式创建一个新的文本视图,本教程将帮助你:DB中有3行:Book,Copybook,pencil。当用户点击book时,它将重定向到newClass.class并显示用户关于book的信息,当点击copybook时,它将重定向到do newClass.class并显示关于我想要的copybook的信息。非常感谢,您了解了我想要的。public void onClick(查看小部件){mListener.onClick(小部件);}在此处发生错误。类型DialogInterface.OnClickListener中的方法onClick(DialogInterface,int)不适用于需要导入
View.OnClickListener
的参数(视图)。相反,您导入了错误的
DialogInterface.OnClickListener
。确保您导入了正确的界面。您现在已经很完美了。当用户单击一个ID时,新类将打开,但如何知道单击了哪个ID?只需将
ID
声明更改为
final String ID=cn.getID().toString()
当您将它设置为
最终版时
您将能够在
onClick()
methodfriend中使用它,抱歉打扰您了。public void onClick(View v){Intent redir=new Intent(this,notInfo.class);startActivity(redir);}我无法通过这种方式重定向(此消息显示:构造函数Intent(new View.OnClickListener(){},class)未定义数据库中有3行。Apple、Pear、Cumber。我想向用户显示它们。当用户单击Apple时,将显示关于Apple的信息,如果单击Pear,则将显示关于Pear的信息,如果单击Cumber,则关于Cumber的信息将显示在info.class中,我将在info.class中获得id,我将知道用户选择了哪一行。共有3行在DB.Apple,Pear,Cumber中的s。我想向用户显示它们。当用户单击Apple时,将显示关于Apple的信息,如果单击Pear,则将显示关于Pear的信息,如果单击Cumber,则关于Cumber的信息将显示在info.class中,我将在info.class中获得id,我将知道用户选择了哪一个。DB.Apple,Pear,Cumber中有3行。我想向用户显示它们。当用户单击Apple时,将显示关于Apple的信息,如果单击pear,则将显示关于pear的信息,如果单击cucumber,则关于cucumber的信息将显示在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);}})public class info扩展活动{onCreate(){if(apple){setContentView(apple.xml”);}else if(pear){setContentView(pear.xml”);}
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);        
}
// Put this at the end after finishing your for-loop
setNote.setMovementMethod(LinkMovementMethod.getInstance());