我试图1)显示视图,2)修改另一个视图以响应用户点击视图。可点击视图由适配器填充并设置为GridView。在我的代码中,mTextView是对rootView中另一个视图的引用。没有NullPointer错误。
奇怪的问题是
在我的代码中,对于我使用LINE 3的mTextView调用的任何方法,让它为setVisibility()或诸如此类,LINE3将绘制(在另一个视图中显示已更改的文本HELLO WORLD),但LINE 1刚刚赢了。奇怪的是,使用LINE 3,当我第二次点击该项目时,LINE 1正常工作。
当我评论LINE 3时,LINE 1在第一次点击时起作用。那么,LINE 1的视图显然不是NULL(或者可能吗?)
另一个奇怪的行为是,LINE 2始终按预期工作,背景颜色改变了第一次点击,有或没有LINE 3。
每个LINE1,LINE2或LINE3都可以在onItemClick上完美运行。
令我困惑的是为什么LINE2可以工作而不是LINE1,LINE3,LINE2,LINE1之间可能有什么依赖关系。这是代码。
// Setup OnItemClickListener to respond to user click
mCardsGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// store the selected favor item as an instance, if it is not set already
mSelectedGameCardItem = (GameCardItem) parent.getItemAtPosition(position);
// Make the content visible (LINE 1)
view.findViewById(R.id.game_card_item_title).setVisibility(View.VISIBLE);
// Change the background color (LINE 2)
view.findViewById(R.id.game_card_item).setBackgroundColor(ContextCompat.getColor(getContext(), R.color.colorAccent));
// change tag line message at another view, rootView(LINE 3)
mTextView.setText(getResources().getString(R.string.favors_game_post_game_description, "HELLO WORLD"));
}
}
});
item_card布局的XML,适配器使用此布局来扩展网格中的项目。
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<LinearLayout
android:id="@+id/game_card_item"
android:padding="8dp"
android:background="@color/colorLightPrimary"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="16dp"
app:srcCompat="@drawable/ic_mysterious_box_36dp" />
<TextView
android:id="@+id/game_card_item_title"
android:textColor="@color/colorPrimaryText"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Title"
android:text="@string/favors_default_1" />
</LinearLayout>
</android.support.v7.widget.CardView>