【发布时间】:2013-11-16 17:40:56
【问题描述】:
我正在向适配器中的文本字段添加一个 onClick 侦听器。我只是想将该字段中的文本发布到我的文本输入框 (edittext1)。我正在尝试下面的代码,但是它在指向 edttext1 的行处给了我一个 NullPoint 异常。请帮忙
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutInflater inflater2 = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater2.inflate(R.layout.activity_discuss, parent, false);
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(type==1 || type==3)
row = inflater.inflate(R.layout.listitem_discuss, parent, false);
else if(type==4 || type==5)
row = inflater.inflate(R.layout.listitem_users, parent, false);
else
row = inflater.inflate(R.layout.listitem_messages, parent, false);
}
//
final OneComment coment = getItem(position);
userComment = (TextView) row.findViewById(R.id.comment);
userImage = (ImageView) row.findViewById(R.id.place_img);
userName = (TextView) row.findViewById(R.id.place_name);
userOnlineImage = (ImageView) row.findViewById(R.id.pe_profile_pic);
commentDate = (TextView) row.findViewById(R.id.place_distance);
msgPic = (ImageView) row.findViewById(R.id.msgPic);
userComment.setText(coment.comment);
editText1 = (EditText) row.findViewById(R.id.cr_room_name);
userName.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
editText1.setText("testing");
Log.v("response","username selected");
// TODO Auto-generated method stub
}
});
我实际上更愿意将其设为 Longclick。设置有区别吗?
堆栈跟踪
11-16 12:46:29.100: E/AndroidRuntime(8047): FATAL EXCEPTION: main
11-16 12:46:29.100: E/AndroidRuntime(8047): java.lang.NullPointerException
11-16 12:46:29.100: E/AndroidRuntime(8047): at com.peekatucorp.peekatu.DiscussArrayAdapter$1.onClick(DiscussArrayAdapter.java:129)
11-16 12:46:29.100: E/AndroidRuntime(8047): at android.view.View.performClick(View.java:4240)
11-16 12:46:29.100: E/AndroidRuntime(8047): at android.view.View$PerformClick.run(View.java:17721)
11-16 12:46:29.100: E/AndroidRuntime(8047): at android.os.Handler.handleCallback(Handler.java:730)
11-16 12:46:29.100: E/AndroidRuntime(8047): at android.os.Handler.dispatchMessage(Handler.java:92)
11-16 12:46:29.100: E/AndroidRuntime(8047): at android.os.Looper.loop(Looper.java:137)
11-16 12:46:29.100: E/AndroidRuntime(8047): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-16 12:46:29.100: E/AndroidRuntime(8047): at java.lang.reflect.Method.invokeNative(Native Method)
11-16 12:46:29.100: E/AndroidRuntime(8047): at java.lang.reflect.Method.invoke(Method.java:525)
11-16 12:46:29.100: E/AndroidRuntime(8047): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-16 12:46:29.100: E/AndroidRuntime(8047): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-16 12:46:29.100: E/AndroidRuntime(8047): at dalvik.system.NativeStart.main(Native Method)
活动讨论.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/form"
android:layout_alignParentTop="true"
android:choiceMode="none"
android:divider="#00000000"
android:dividerHeight="@dimen/zerosize"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:listSelector="@android:color/transparent">
</ListView>
<RelativeLayout
android:id="@+id/form"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="@drawable/inputbg" >
<!-- <Button
android:id="@+id/postpic"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/attachbtn" /> -->
<!-- android:background="@drawable/sendbutton" -->
<EditText
android:id="@+id/cr_room_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/sendMessage"
android:layout_weight="3"
android:ems="10"
android:hint="Enter Message"
android:inputType="text" />
<ImageView
android:id="@+id/postpic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/picattach" />
<Button
android:id="@+id/sendMessage"
style="@style/SingleGradient"
android:layout_width="35dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
【问题讨论】:
-
也许editText没有将id传递给findViewById,记录它的值或者只是检查xml上的值
-
如果您阅读过任何与此类似的现有问题,您会发现第一条评论几乎总是相同的。请从 logcat 发布堆栈跟踪。
-
这个类型从何而来?
-
我猜你想要类似于stackoverflow.com/questions/18868194/… 的东西。为行项目膨胀不同的布局
-
XML 和堆栈跟踪。从主 Activity 传入以使用 Tab 进行跟踪的“类型”当前正在应用中显示。
标签: android nullpointerexception textview onclicklistener onlongclicklistener