奇怪的OnItemClick行为(片段中的GridView)

时间:2017-04-09 01:04:24

标签: java android gridview

我试图1)显示视图,2)修改另一个视图以响应用户点击视图。可点击视图由适配器填充并设置为GridView。在我的代码中,mTextView是对rootView中另一个视图的引用。没有NullPointer错误。

奇怪的问题是

  1. 在我的代码中,对于我使用LINE 3的mTextView调用的任何方法,让它为setVisibility()或诸如此类,LINE3将绘制(在另一个视图中显示已更改的文本HELLO WORLD),但LINE 1刚刚赢了。奇怪的是,使用LINE 3,当我第二次点击该项目时,LINE 1正常工作。

  2. 当我评论LINE 3时,LINE 1在第一次点击时起作用。那么,LINE 1的视图显然不是NULL(或者可能吗?)

  3. 另一个奇怪的行为是,LINE 2始终按预期工作,背景颜色改变了第一次点击,有或没有LINE 3。

  4. 每个LINE1,LINE2或LINE3都可以在onItemClick上完美运行。

  5. 令我困惑的是为什么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>
    

0 个答案:

没有答案