Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在listview上实现ClickEvent?_Java_Android_Xml_Listview - Fatal编程技术网

Java 如何在listview上实现ClickEvent?

Java 如何在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;

如何在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;
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,它有更多的优点。。。。