有没有办法在不使用任何点击事件的情况下获取TextView
的值,这是ListView的一个项目?
<?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="horizontal">
<TextView
android:id="@+id/friendNoTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<ImageView
android:id="@+id/friendImage"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/friendFullName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/friendImage"
android:textColor="#0D47A1" />
<ImageButton
android:id="@+id/addFriendButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/add_friend" />
<TextView
android:id="@+id/addFriendTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/addFriendButton"
android:layout_marginTop="5dp"
android:text="ADD FRIEND"
android:textColor="#0D47A1"
android:textSize="10sp" />
</RelativeLayout>
我自定义的行布局如上定义,我需要获取friendNoTv TextView
的值,而不需要任何点击事件。我试了一下
@Override
public View getView(int index, final View convertView, ViewGroup parent) {
// check if we need to generate a new View from scratch or recycle one
View InflatedView = convertView;
if (InflatedView == null) {
InflatedView = Inflater.inflate(R.layout.find_friends_result_row, parent, false);
}
// setup variables
final TextView friendNo = (TextView) InflatedView.findViewById(R.id.friendNoTv);
ImageView friendImage = (ImageView) InflatedView.findViewById(R.id.friendImage);
TextView friendFullName = (TextView) InflatedView.findViewById(R.id.friendFullName);
ImageButton addFriendButton = (ImageButton) InflatedView.findViewById(R.id.addFriendButton);
//Exception here, friendNo.getText().toString() comes up NULL
final int friendId = Integer.parseInt(friendNo.getText().toString());
if(isFriend(friendId)){
addFriendButton.setVisibility(View.GONE);
}else{
addFriendButton.setVisibility(View.VISIBLE);
}
//TODO
Friend friend = friendList.get(index);
DataFormatter dataFormatter = new DataFormatter();
friendNo.setText(Integer.toString(friend.getBorNo()));
dataFormatter.decodeimage(friend.getUserImage(),friendImage);
friendFullName.setText(friend.getFullName());
return InflatedView;
}
但价值出现Null
会导致Exception
。我该如何解决 ?任何帮助都会受到启发。
答案 0 :(得分:-1)
删除android:visibility =&#34;去掉&#34;来自
<TextView
android:id="@+id/friendNoTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
并在文本视图上方添加文字
例如
android:text="1"
答案 1 :(得分:-1)
您正在获取null,因为您刚刚对视图进行了充气,并且您在设置之前尝试获取文本。在您的XML中,您没有设置任何文本值,这就是您在那里什么也得不到的原因。
只需将下面的行替换为null,
final int friendId = Integer.parseInt(friendList.get(index).getFriendId.toString());
&#13;
答案 2 :(得分:-1)
您的代码在这里:
//Exception here, friendNo.getText().toString() comes up NULL
final int friendId = Integer.parseInt(friendNo.getText().toString());
肯定会为null,因为尚未设置friendNo。你应该在return语句之前使用条件语句粘贴这些行。