首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在listview上实现ClickEvent?

如何在listview上实现ClickEvent?
EN

Stack Overflow用户
提问于 2017-06-22 12:46:04
回答 3查看 55关注 0票数 0

如何在listview上实现Click事件?我应该尝试OnItemClickListener还是OnItemSelectedListener ?我的代码如下:

Mainactivity.java

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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>

我尝试了所有的方法来实现点击事件,但它显示了错误。我怎么才能让它工作呢?

EN

回答 3

Stack Overflow用户

发布于 2017-06-22 13:04:03

这就是我们在Listview中设置clicklistener的方式。

代码语言:javascript
复制
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) {
        }
    });
    // Execute DownloadJSON AsyncTask
    new DownloadJSON().execute();
 }
票数 0
EN

Stack Overflow用户

发布于 2017-06-22 13:10:47

在你的适配器内部创建一个界面。

代码语言:javascript
复制
 public interface CallBack {
    void getData(Object obj1, Object obj2);
}

从activity的引用初始化它,无论是通过适配器的构造函数还是创建任何方法。我正在为它使用方法

代码语言:javascript
复制
 public void setCallBack(CallBack callBack) {
    this.callBack= callBack;
}

在活动中

代码语言:javascript
复制
   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.
        }
    });

然后在适配器内部,在任何视图上单击,设置您要使用的值:

代码语言:javascript
复制
 holder.View.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            callBack.getData(YOUR_DATA,YOUR_DATA);

        }
    });

通过使用此技术,您可以处理在列表视图或重排序视图行的任何视图(如按钮,图像等)上的单击。

票数 0
EN

Stack Overflow用户

发布于 2017-06-22 13:10:53

代码语言:javascript
复制
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;
  }
 });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44690347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档