2014-06-28 90 views
0

我已經動態創建了所有已安裝應用程序的checkedtextview。我想知道如何知道用戶點擊了checkedtextview。我已經搜索並找不到解決方案。有人能給我一個例子嗎?知道點擊了checkedtextiew時

ScrollView sv = new ScrollView(this); 

    LinearLayout ll = new LinearLayout(this); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    sv.addView(ll); 

    final PackageManager pm = getPackageManager(); 

    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 

    for (ApplicationInfo packageInfo : packages) { 
      CheckedTextView ctv = new CheckedTextView(this); 
      ctv.setText(packageInfo.packageName); 
      ctv.setCheckMarkDrawable (android.R.drawable.checkbox_on_background); 
      ctv.setHeight(80); 
      ctv.setTextSize(35); 
      ll.addView(ctv); 
    } 
    this.setContentView(sv); 

這是做什麼,但似乎不是正確的方式?

for (ApplicationInfo packageInfo : packages) { 
      CheckedTextView ctv = new CheckedTextView(this); 
      ctv.setText(packageInfo.packageName); 
      ctv.setCheckMarkDrawable (android.R.drawable.checkbox_on_background); 
      ctv.setHeight(80); 
      ctv.setTextSize(35); 
      ctv.setOnTouchListener(new OnTouchListener(){ 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        if (event.getAction() == MotionEvent.ACTION_DOWN) { 
         // Toggle the checked state of the button 
         CheckedTextView ctv = (CheckedTextView) v; 
         if (ctv.isSelected()) { 
          ctv.setSelected(false); 
          ctv.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); 

         } else { 
          ctv.setSelected(true); 
          ctv.setCheckMarkDrawable(android.R.drawable.checkbox_on_background); 

         } 
        } 
        return true; 
       } 
      }); 


      ll.addView(ctv); 
    } 
    this.setContentView(sv); 
+0

這是Android嗎?如果是這樣,你應該標記它。 –

回答

1

要注意點擊視圖時應該使用OnClickListener

ctv.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     Toast.makeText(MyActivity.this, "Click!", Toast.LENGTH_SHORT).show(); 
    } 

}); 
+0

謝謝你的幫助,這是否在for循環中。我在看到你的答案之前編輯我的問題。看起來像它的作品。 – user3786542

+0

這取決於。如果您想爲每個按鈕單獨添加一個OnClickListener,或者您可以在循環外部創建一個OnClickListener並將其添加到循環中,則可以在循環中使用它。如果你使用一個,你可以使用'view.getId()'來標識點擊的按鈕。另外,要清理代碼,您可以創建一個實現OnClickListener的單獨類。 –

+1

太棒了,我去了單獨的課。謝謝 – user3786542

相關問題