Java 如何在listview上实现ClickEvent?
如何在listview上实现单击事件? 我应该尝试OnItemClickListener还是OnItemSelectedListener?我的代码如下: Mainactivity.javaJava 如何在listview上实现ClickEvent?,java,android,xml,listview,Java,Android,Xml,Listview,如何在listview上实现单击事件? 我应该尝试OnItemClickListener还是OnItemSelectedListener?我的代码如下: 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;
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);
}
}
package com.example.se_02.eventhand;
导入android.app.Activity;
导入android.app.usage.UsageEvents;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
导入java.util.ArrayList;
公共类MainActivity扩展了活动
{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串[]食品=新字符串[]{“牛肉”、“冰淇淋”、“香肠”、“烤肉串”、“法拉尔”、“辛格尔”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”};
ArrayList=新建ArrayList();
对于(int i=0;i
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>
我尝试了一切来实现点击事件,但它显示了我的错误。如何使其工作这是我们在Listview中设置clicklistener的方法
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
}
});
// Execute DownloadJSON AsyncTask
new DownloadJSON().execute();
}
listview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型
位置(长id){
}
});
//执行下载JSON异步任务
新建下载JSON().execute();
}
在您的适配器内部创建一个接口
public interface CallBack {
void getData(Object obj1, Object obj2);
}
通过适配器的构造函数或生成任何方法,从活动的引用初始化它。我正在使用这个方法
public void setCallBack(CallBack callBack) {
this.callBack= callBack;
}
在活动中,
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.
}
});
然后在适配器内部,在任何视图上单击,设置要使用的值:
holder.View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callBack.getData(YOUR_DATA,YOUR_DATA);
}
});
通过使用此技术,您可以处理单击列表视图或recylerview行的任何视图(如按钮、图像等)。Listview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
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;
}
});
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
开关(listview.getItemAtPosition(位置){
案例“牛肉”:
//这样做
打破
}
});
}
但它一直给我错误提示让我分享吗?你的问题也是一样,这里已经回答了。请参考:使用接口在适配器和活动或片段之间进行通信。只有一个提示:使用RecyclerView而不是ListView,它有更多的优点。。。。