这是我的第一篇文章,我希望我不会犯任何错误。我正在制作自己的应用程序,此时我陷入困境。
我有一个带有自定义布局的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实现为具有无限循环和检查的侦听器是个好主意吗?