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方法实现这一点.
我已经解决了我的问题.我只需要在我的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)
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |