3

In my activity I have a listview and a button. Each has separate purpose.

My listview shows an item details in another activity.

My button opens another activity.

Here listview does not have any problem. But my button does not work.

In my code I have used following sample for listview and button

    public class MainActivity extends AppCompatActivity implements ListView.OnItemClickListener{

   private Button buttonaddticket;

    private ListView listView;
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.MainActivity );

            listView = (ListView) findViewById(R.id.srListView);

            listView.setOnItemClickListener(this);

            buttonaddticket = (Button) findViewById(R.id.btnaddticket);

            //Setting listeners to button
            buttonaddticket.setOnClickListener((View.OnClickListener) this);

        }
        .
        .
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(this, SingleTicket.class);
        .
        }


    public void onClick(View v) {
        if(v == buttonaddticket){
        .
        .
        }
    }
        }

Question is how can I implement onClickListener in same activity for my button?

Cœur
  • 37,241
  • 25
  • 195
  • 267
tanvir
  • 317
  • 3
  • 13

3 Answers3

3

You can implements multiple Listener for your Activity

public class MainActivity extends AppCompatActivity implements ListView.OnItemClickListener,View.OnClickListener{

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         // handle listview on item click
    }

    @Override
    public void onClick(View view){
         switch (view.getId()){
                    //handle multiple view click events
         }
    }

}
Linh
  • 57,942
  • 23
  • 262
  • 279
0

What you need to do is get the reference to the button and use the "View.OnClickListener" interface in order to get the click to register. In order to make sure the button registers the click it needs to have its listener set to "this" activity. This will allow your list to pick up the clicks individually compared to your button.

public class MainActivity extends AppCompatActivity implements ListView.OnItemClickListener, View.OnClickListener {

  private Button yourButton;
  private ListView listView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.MainActivity);

      yourButton = (Button) findViewById(/* Your button id */);
      yourButton.setOnClickListener(this);

      listView = (ListView) findViewById(/* Your list id */);
      listView.setOnItemClickListener(this);
  }

  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     // handle listview item click here
  }

  @Override
  public void onClick(View view){
       //Handle button click here
  }
}
Sean Keane
  • 108
  • 1
  • 8
0

Try this!!!

public class MainActivity extends AppCompatActivity implements ListView.OnItemClickListener, View.OnClickListener {

 private Button buttonaddticket;
 private ListView listView;

 @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.MainActivity);

   buttonaddticket = (Button) findViewById(R.id.btnaddticket);
   buttonaddticket.setOnClickListener(this);

   listView = (ListView) findViewById(R.id.srListView);

  listView.setOnItemClickListener(this);
 }

@Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 // handle listview item click here
}

 @Override
 public void onClick(View view){
   switch(view.getId()){
   case R.id.btnaddticket:

   // Enter Code here     
   break;

   }
 }
}
Nguyễn Trung Hiếu
  • 2,004
  • 1
  • 10
  • 22