What should I do to achieve Click Event on listview ? Should I try OnItemClickListener or OnItemSelectedListener ?My code is here:
Mainactivity.java
package com.example.se_02.eventhand;
import android.app.Activity;
import android.app.usage.UsageEvents;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] foods = new String[] {"beef", "icecream", "sausage", "kebab", "falal", "zinger","1","2","3","4","5","6","7","8","9"};
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < foods.length; ++i ) {
list.add(foods[i]);
}
ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
final ListView Eventid = (ListView) findViewById(R.id.Eventid);
Eventid.setAdapter(adapter);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="6dip" >
<ListView
android:id="@+id/Eventid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
</LinearLayout>
I tried everything to achieve click event but it shows me error. how can I make it to work
This is how we set clicklistener in Listview.
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
}
});
// Execute DownloadJSON AsyncTask
new DownloadJSON().execute();
}
Make an interface internally in your adpater.
public interface CallBack {
void getData(Object obj1, Object obj2);
}
Initaliize it from reference from activity, either by constructor of adapter or making any method. I am using method for it
public void setCallBack(CallBack callBack) {
this.callBack= callBack;
}
In activity,
adapter.setCallBack(new adapter.CallBack() {
@Override
public void getData(Object obj1, Object obj2) {
YOUR_DATA_TYPE data= (YOUR_DATA_TYPE) obj1;
// code here what you want to do with data of clicked view of list.
}
});
Then inside your adapter, on any view click, set your value which you want to use :
holder.View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callBack.getData(YOUR_DATA,YOUR_DATA);
}
});
By using this technique, you can handle click on any view (like button,image etc) of row of list view or recylerview.
Listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (listview.getItemAtPosition (position) {
case "beef" :
//Do This
break;
}
});
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.