-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

TextView 全体をクリック可能にしたい場合は、他の人が言及したように onClickListener を追加するだけです。

Spanただし、印刷する各 ID を個別にクリック可能にしたい場合 (つまり、それぞれ別の場所に移動したい場合)、独自のクラスを作成して追加する必要があります。

実装例を次に示します。まず、から拡張して独自のスパンを定義します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をクリックして個別に移動できるようになります

于 2013-07-25T10:05:53.200 に答える
0

onClickListener()、http: //developer.android.com/reference/android/view/View.OnClickListener.html を使用する必要があります。

各 ID で異なるアクションをトリガーする場合は、ID が関連付けられた独自のビューにある必要があります。ビュー内の異なるテキストに対して異なるアクションを設定することはできません。

于 2013-07-25T09:48:45.003 に答える
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 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 に答える