-7

通过这种方式,我已经显示了来自 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 对应的单独活动。我怎样才能做到这一点?

4

7 回答 7

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

       }
});
于 2013-07-25T09:49:20.037 回答
0

如果你想让整个 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);  
    }  
}  

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

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

Activity这将允许您使每个 ID 都可点击,如果这是您想要的,每个 ID 都会转到单独的位置

于 2013-07-25T10:05:53.200 回答
0

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

于 2013-07-25T09:50:18.950 回答
0

你可以这样做:

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

       }
于 2013-07-25T09:51:39.687 回答
0

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

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

于 2013-07-25T09:48:45.003 回答
0
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)

并按照自己的方式编写代码

于 2013-07-25T09:54:14.497 回答
0

SetOnclickListner. 用于单击任何View

于 2013-07-25T10:16:07.680 回答