从另一个onClick方法控件访问ListView控件

woy*_*aru 0 android onclick listactivity

如何从分配给ImageView的onClick方法访问TextView,例如TextView?TextView和ImageView组成了ListView项.

在我的item.xml中,我有:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> 
<ImageView
    android:id="@+id/img"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:onClick="onImgClick"
    />      
<TextView android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在我的ListActivity中,我有onImgClick方法:

 public void onImgClick(View v) {
    TextView tv = (TextView) v.findViewById(R.id.text);
tv.setText("Hello world!");
} 
Run Code Online (Sandbox Code Playgroud)

但View v - 这是ImageView,所以在这个方法中我有致命异常:

java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

在线上:

tv.setText("Hello world!");
Run Code Online (Sandbox Code Playgroud)

我知道这不是访问TextView的正确方法.而且我知道我可以根据整个ListView使用onListItemClick(ListView l,View v,int position,long id).但我想从ImageView onClick方法实现这一点.

woy*_*aru 5

我已经解决了我的问题.我只需要在我的LinearLayout上设置id:

android:id="@+id/main_layout"
Run Code Online (Sandbox Code Playgroud)

然后做类似的事情:

public void onImgClick(View v) {
    LinearLayout linearLayout = (LinearLayout) v.getParent();       
    TextView textView = (TextView) linearLayout.findViewById(R.id.text);        
    textView.setText("Hello world!");
}
Run Code Online (Sandbox Code Playgroud)