Как добавить прослушиватели кликов к надутым кнопкам XML? - PullRequest
0 голосов
/ 15 декабря 2011

Я реализую Pakerfeldts 'viewflow (в частности,' DiffViewFlowExample ') в моей основной деятельности, и я не могу понять, как добавить прослушиватели кликов в ImageButtons, которые находятся в моих раздутых представлениях.Итак, как мне добавить прослушиватель щелчков к кнопке с изображением, расположенной в dashboard_view с @ id =ulatoryDocsBtn?

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

Основной класс активности:

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>

Ответы [ 3 ]

4 голосов
/ 15 декабря 2011

Вы можете добавить свойство 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
}

Надеюсь, это поможет.

1 голос
/ 15 декабря 2011

Вы просто должны получить кнопку, используя

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

Это должносделай это.Это все в примере в документации :)

0 голосов
/ 18 января 2013

Вместо Button используйте TextView и напишите прослушиватель щелчков на этом TextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...