在listview android中访问list_item的所有视图

时间:2016-05-07 21:25:34

标签: android listview

我在list_item_layout中有两个textview和一个imageview我想在点击时对每个视图执行一些操作。我该怎么做?还要在列表项目布局上长按时执行删除操作。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/rectangle_shadow"
android:orientation="horizontal">



    <TextView
        android:id="@+id/t1"
        android:layout_width="match_parent"
        android:fontFamily="monospace"
        android:minHeight="30dp"
        android:layout_height="wrap_content"
        android:textSize="20sp" />



<TextView
    android:layout_margin="2dp"
    android:id="@+id/t2"
    android:layout_gravity="center_vertical"
    android:textStyle="italic"
    android:layout_width="0dp"
    android:layout_weight="0.4"
    android:layout_height="wrap_content" />

<ImageView
    android:id="@+id/word_list_popup_menu_button"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:padding="10dp"
    android:layout_marginRight="10dp"
    android:layout_gravity="center_vertical"
    android:alpha="0.5"
    android:background="@null"
    android:src="@drawable/ic_more_vert_black_24px" />
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

在适配器的OnClickListener方法中为每个视图设置getView()

public View getView(int position, View convertView, ViewGroup viewGroup) {
    ViewHolder viewHolder;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.list_item_layout, parent, false);
        viewHolder = new ViewHolder();
        viewHolder.t1 = convertView.findViewById(R.id.t1);
        viewHolder.t1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        viewHolder.t2 = convertView.findViewById(R.id.t2);
        viewHolder.t2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        viewHolder.word_list_popup_menu_button = convertView.findViewById(R.id.word_list_popup_menu_button);
        viewHolder.word_list_popup_menu_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        convertView.setTag(viewHolder);

    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    return convertView;
}

static class ViewHolder {
    TextView t1;
    TextView t2;
    ImageView word_list_popup_menu_button;
}

答案 1 :(得分:0)

如果您按照RecyclerView概述的guides进行操作,他们会解释您如何使用ViewHolders绑定到您的布局以及您感兴趣的观看次数。这是因为RecyclerViews(和ListViews)工作的基本方式 - 他们不会立即保留所有项目,而是重新使用视图来提高效果。

指南中的所有内容,我和其他人从中学到的东西!