从同一布局父级访问元素

时间:2018-04-30 05:28:40

标签: android listview

我有一个包含不同组件的列表视图(2个线性布局和一个按钮),我想要做的是当我点击其中一个线性布局内的按钮时,我想访问其他线性布局内的文本视图, 可能吗 ?

<?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">

    <ListView
        android:id="@+id/listV2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/icon"
            android:layout_width="85dp"
            android:layout_height="wrap_content" />

        <LinearLayout
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/nom"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/textCname"
                android:textSize="21dp"

                android:textStyle="bold" />

            <TextView
                android:id="@+id/numero"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="12dp"
                android:textColor="@color/textCother"
                android:textStyle="italic" />
            <TextView
                android:id="@+id/ville"
                android:layout_width="match_parent"
                android:textColor="@color/textCother"
                android:layout_height="wrap_content"
                android:textSize="12dp"
                android:textStyle="italic" />
        </LinearLayout>

        <Button
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:visibility="invisible" />
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            >
            <ImageView
                android:id="@+id/remove"
                android:onClick="contactRemove"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <ImageView
                android:id="@+id/edit"
                android:onClick="contactEdit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
                android:layout_marginLeft="22dp"/>

            <ImageView
                android:onClick="contactCall"
                android:id="@+id/call"
                android:layout_marginLeft="22dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

我想要做的是访问android:id="@+id/numero"的值 当我点击其中一个图像视图

2 个答案:

答案 0 :(得分:1)

您可以设置View类提供的OnClickListener界面。这样的事情。

在您的活动类

上实施侦听器
public class SpinnerActivity extends AppCompatActivity implements
    View.OnClickListener

为您的观点声明类级别变量

private TextView tvNumero;
private ImageView ivRemove, ivEdit, ivContactCall;

onCreate()方法

中查找初始值
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gildi_spinner);

    tvNumero = (TextView) findViewById(R.id.numero)
    ivRemove = (ImageView) findViewById(R.id.remove);
    ivEdit = (ImageView) findViewById(R.id.edit);
    ivContactCall = (ImageView) findViewById(R.id.contactCall);

    ivRemove.setOnClickListener(this);
    ivEdit.setOnClickListener(this);
    ivContactCall.setOnClickListener(this);
}

Onclickistener实施了一个类,您可以在其中获得已注册视图的点击事件

@Override
public void onClick(View v) {

    switch (v.getId()) {
        case R.id.remove:
        case R.id.edit:
        case R.id.contactCall:
            Toast.makeText(this, tvNumero.getText().toString(), Toast.LENGTH_SHORT).show();
            break;
    }
}

注意tvNumero.getText().toString()为您提供所需 TextView值。

更新

  • 首先将ListView替换为RecyclerView

参考RecyclerView Example教程。

  • 其次是为列出的项目实现onClick

参考recyclerview-onclick教程。

答案 1 :(得分:1)

创建适配器时传递上下文,使用该上下文获取膨胀视图。

Adapter adapter = new Adapter(this);

然后在Adpater类构造函数中:

public Adapter(Context context){
context.findViewById(R.id.textview);//consider this as numero textview
}

然后根据您的要求访问它。希望它有所帮助!