2011-12-14 2 views
0

Я реализую Pakerfeldts' viewflow (В частности, «DiffViewFlowExample») в моем основном действии, и я не могу понять, как добавить кликов-слушателей в ImageButtons, которые находятся в моих завышенных представлениях.Как добавить прослушивателей для надутых кнопок XML?

Итак, как добавить кнопку просмотра кликов к кнопке изображения w/an @ id = normDocsBtn, расположенной в dashboard_view?

Ниже приведены фрагменты кода & Я благодарю вас за любую помощь.

Основная деятельность Класс:

public class Home extends Activity { 

    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /** 
    * Setup the ViewFlow 
    * w/TitleFlow------------------------------------------ 
    */ 
    ViewFlow viewFlow = (ViewFlow) findViewById(R.id.viewflow); 
    DiffAdapter vfAdapter = new DiffAdapter(this); 
    viewFlow.setAdapter(vfAdapter); 

    TitleFlowIndicator indicator = (TitleFlowIndicator) findViewById(R.id.viewflowindic); 
    indicator.setTitleProvider(vfAdapter); 
    viewFlow.setFlowIndicator(indicator); 
} 

DiffAdapter Класс: Примечание: завышенные взгляды @ нижней части этого класса.

public class DiffAdapter extends BaseAdapter implements TitleProvider { 

private static final int VIEW1 = 0; 
private static final int VIEW2 = 1; 
private static final int VIEW_MAX_COUNT = VIEW2 + 1; 
private final String[] names = { "DashBoard", "ToolBox" }; 

private LayoutInflater mInflater; 

public DiffAdapter(Context context) { 
mInflater = (LayoutInflater) context 
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override(S)............... 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
int view = getItemViewType(position); 
if (convertView == null) { 
    switch (view) { 
    case VIEW1: 
    convertView = mInflater.inflate(R.layout.dashboard_view, null); 
    break; 
    case VIEW2: 
    convertView = mInflater.inflate(R.layout.toolbox_view, null); 
    break; 
    } 
} 
return convertView; 
} 

сниппета одного из видов: dashboard_view.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:weightSum="1" > 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#10000000" 
    android:stretchColumns="*" > 

    <!-- Row 1 --> 

    <TableRow android:layout_weight="1" > 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" > 

      <ImageButton 
       android:id="@+id/regulatoryDocsBtn" 
       style="@style/dashBoardimageBtn" 
       android:src="@drawable/ic_launcher_regulatory" /> 

      <TextView 
       style="@style/dashBoardTxt" 
       android:layout_below="@id/regulatoryDocsBtn" 
       android:text="Regulatory Docs" /> 
     </RelativeLayout> 
     ..... 
     </TableRow> 

ответ

4

Вы можете добавить свойство onClick в кнопку в xml, указав имя метода для выполнения.

Метод должен иметь параметр View.

Например:

В макете XML:

<Button android:id="@+id/testButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click me!" 
    android:onClick="testClick" /> 

В коде активности:

public void testClick(View v) { 
    // The code to be executed on click 
} 

Надеется, что это помогает.

+2

Простота вещей, о которых я не знал. Thnx !! Это сработало. Вот ссылка на то, как его использовали: [Легче нажмите кнопку прослушивания] (http://android-developers.blogspot.com/2009/10/ui-framework-changes-in-android-16.html) @ в нижней части блог. – CelticParser

1

Вы просто должны получить кнопку с помощью

ImageButton rdb = (ImageButton) findViewById(R.id.regulatoryDocsBtn); 

и добавить слушателя к нему:

rdb.setOnClickListener(new RdbOnClickListener()); 
... 

class RdbOnClickListener implements OnClickListener { 
    public void onClick(View v) { 
     //do what you gotta do 
    } 
} 

или просто:

rdb.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     //do what you gotta do 
    } 
}); 

Это должно быть сделано. Это все в примере в documentation :)

+0

Это то, что я изначально пробовал и думал, но он не работает - просто NPE. Thnx, хотя. – CelticParser

+0

Что именно не работает? Потому что он должен работать :) Вы должны вызвать findViewById() в своей деятельности или сделать это как Activity.findViewById (..). –

0

Вместо Button используйте TextView и напишите на нем уведомление о том, что TextView.