Android 列表视图 setOnItemClickListener 不起作用 [英] Android list view setOnItemClickListener not working

查看:20
本文介绍了Android 列表视图 setOnItemClickListener 不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想最初在列表视图中隐藏编辑文本和按钮字段,并在单击原始文件时在列表视图中显示特定原始文件的编辑文本和按钮.所以我尝试在布局 xml 中将高度设置为 0 和然后当用户单击原始值时将其设置为其他值,但它不起作用我认为我的列表视图单击事件不起作用.在我有列表视图的 Android 布局中,有图像视图作为按钮,也有编辑文本字段和列表视图.喜欢如下

I want to hide the edit text and button field initially in list view and show that edit text and button for a particular raw in list view when that raw is clicked.So I tried to set the height to 0 in layout xml and then set it to some other value when user clicks on a raw, but it is not working I think my list view click event is not working. In the Android layout that I have list view there are Image view as a button, edit text field and list view also. Like follows

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainPortal" >

<ListView
    android:id="@+id/employeeListView"
    android:layout_width="650dp"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="25dp"
    android:clickable="true">
</ListView>

<EditText
    android:id="@+id/empPin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/iv_start_journey_btn"
    android:layout_marginBottom="56dp"
    android:layout_marginRight="17dp"
    android:layout_toLeftOf="@+id/employeeListView"
    android:ems="10"
    android:inputType="number"
    android:hint="@string/add_emp_pin_hint" >

    <requestFocus />
</EditText>

<ImageView
    android:id="@+id/iv_start_journey_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/employeeListView"
    android:layout_alignRight="@+id/empPin"
    android:layout_marginBottom="84dp"
    android:onClick="startJourney"
    android:src="@drawable/start" />

</RelativeLayout>

我为列表视图使用了以下自定义布局

I have used following custom lay out for the list view

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/emp_avatar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="18dp"
    android:adjustViewBounds="true"
    android:maxHeight="80dp"
    android:maxWidth="80dp"
    android:src="@drawable/person" />

<TextView
    android:id="@+id/emp_number"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/emp_avatar"
    android:layout_toRightOf="@+id/emp_avatar"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/empPin"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_alignBottom="@+id/emp_avatar"
    android:layout_alignRight="@+id/emp_number"
    android:layout_toRightOf="@+id/emp_avatar"
    android:ems="10"
    android:inputType="number" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/empAdd"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_alignBaseline="@+id/empPin"
    android:layout_alignBottom="@+id/empPin"
    android:layout_marginLeft="20dp"
    android:layout_toRightOf="@+id/empPin"
    android:text="@string/emp_add_btn" />

这里贴一下Activity.java的代码

Here I post the code of Activity.java.

public class MainPortal extends Activity {
private List<Employee> employees = new ArrayList<Employee>();
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_portal);
    populateEmployeeList();
    //populsteListView();

    ListView list = (ListView) findViewById(R.id.employeeListView);
    ArrayAdapter<Employee> adapter = new MylistAdapter();
    list = (ListView) findViewById(R.id.employeeListView);
    list.setAdapter(adapter);

     list.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {
//I ADDED ON CLICK IMPLEMENTATION HERE, BUT THIS IS NOT WORKING
              Toast.makeText(getApplicationContext(), "CLICKED", Toast.LENGTH_SHORT).show();   
              }
            });


private void populateEmployeeList() {
      ...
}



private class MylistAdapter extends ArrayAdapter<Employee>{


    public MylistAdapter(){
        super(MainPortal.this,R.layout.item_view,employees);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View itemView = convertView;
        if(itemView==null){
            itemView = getLayoutInflater().inflate(R.layout.item_view, parent,false);
        }
        Employee currentEmployee = employees.get(position);
        //Avatar
        ImageView imageView = (ImageView) itemView.findViewById(R.id.emp_avatar);
        imageView.setImageResource(currentEmployee.getAvatarId());
        //Employee number
        TextView emp_id = (TextView) itemView.findViewById(R.id.emp_number);
        emp_id.setText(currentEmployee.getId());

        et = (EditText) itemView.findViewById(R.id.empPin);
        return itemView;
    }
}
}

我在上面发布了一些我认为很重要的代码.任何人都可以帮助我完成这项任务.提前致谢.

Above I have posted some codes that I think important. Can any one please help me to do this task. Thanks in advance.

推荐答案

将以下属性添加到您的按钮

Add the following attributes to your button

  android:focusable="false"
  android:focusableInTouchMode="false"

ListView setOnItemClickListener 通过添加按钮不起作用

您的编辑文本是否关注列表项的点击?如果是这样,也请移除对 edittext 的关注.

Is your edittext taking focus on click of list item? If so remove the focus on edittext also.

这篇关于Android 列表视图 setOnItemClickListener 不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆