从内部适配器更改视图?

时间:2014-09-18 19:42:57

标签: java android gridview baseadapter

这是我的第一篇文章,我希望我不会犯任何错误。我正在制作自己的应用程序,此时我陷入困境。

我有一个带有自定义布局的GridView,它有两个视图(ImageButton和一个叠加,可以这么说)。我试图实现听起来像这样的东西:当我点击Button时,一些关于Activity的观点会改变:

//listener code goes here

title.setText("Title");
description.setText("Description);
preview.setAlpha(1.0f);
lock.setVisibility(View.GONE);

在尝试实现OnItemClickListener()的尝试失败后,我得出的结论是我需要在BaseAdapter中的按钮上实现OnClickListener()。但是,我不知道我怎么可能这样做。

我尝试了很多东西,比如在Activity类上实现一个方法来更改它们然后调用它。我收到了一个非静态错误。我还尝试实现一个AsyncTask,它每隔100ms检查一次活动中静态变量的变化。 (那只工作一次然后停止了)现在工作正常。它是这样的:

 public class UpdateChecker extends AsyncTask <Void, Void, Void>
{
    @Override
    protected Void doInBackground(Void... voids)
    {
        while(true)
        {
            if(selected)
            {
                Start();
                selected = false;
            }


            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

OnClickListener就像:

     viewButton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view)
     {
         CustomizeActivity.currId =  TargetManager.getTarget(position).ID;
         CustomizeActivity.selected = true;
         CustomizeActivity.currpos = position;
     }
 });

(设置的值是静态的)

XML:

  

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_above="@+id/setButton"
    android:layout_centerHorizontal="true"
    android:background="#ff191919"
    android:id="@+id/relativeLayout">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/frameLayout"
        android:layout_toEndOf="@+id/frameLayout"
        android:layout_alignTop="@+id/frameLayout">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Title"
            android:id="@+id/titleView"
            android:layout_toEndOf="@+id/preView"
            android:textSize="30dp"
            android:textColor="#ffeaeaea"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="This is a sample long description. I am testing."
            android:id="@+id/descriptionView"
            android:layout_toEndOf="@+id/preView"
            android:textColor="#ffcdcdcd"
            android:textSize="20dp"
            android:layout_below="@+id/titleView"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginLeft="5dp" />

    </RelativeLayout>

    <FrameLayout
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/frameLayout"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/preView"
            android:src="@drawable/target_hellokitty"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/imageView"
            android:layout_alignParentStart="true"
            android:layout_alignTop="@+id/preView"
            android:layout_alignLeft="@+id/preView"
            android:layout_alignRight="@+id/preView"
            android:layout_alignBottom="@+id/preView"
            android:src="@android:drawable/ic_lock_lock" />

    </FrameLayout>

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/relativeLayout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <TabHost
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/tabHost"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"></TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

                <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent">

                    <GridView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:id="@+id/gridView"
                        android:numColumns="auto_fit"
                        android:stretchMode="columnWidth"
                        android:columnWidth="100dp" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"></LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"></LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>
</RelativeLayout>

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Set Button"
    android:id="@+id/setButton"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:background="#ff00a4e1"
    android:textColor="#ffffffff" />

您认为将ASyncTask实现为具有无限循环和检查的侦听器是个好主意吗?

0 个答案:

没有答案