如何在listview上实现Click事件?我应该尝试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;
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>我尝试了所有的方法来实现点击事件,但它显示了错误。我怎么才能让它工作呢?
发布于 2017-06-22 13:04:03
这就是我们在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();
}发布于 2017-06-22 13:10:47
在你的适配器内部创建一个界面。
public interface CallBack {
void getData(Object obj1, Object obj2);
}从activity的引用初始化它,无论是通过适配器的构造函数还是创建任何方法。我正在为它使用方法
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);
}
});通过使用此技术,您可以处理在列表视图或重排序视图行的任何视图(如按钮,图像等)上的单击。
发布于 2017-06-22 13:10:53
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;
}
});
}https://stackoverflow.com/questions/44690347
复制相似问题