所以我有一个gridlayout,
activity_main.xml中
<GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:verticalSpacing="0dp" android:horizontalSpacing="0dp" android:stretchMode="columnWidth" android:numColumns="4" android:clickable="false" /> </FrameLayout>
并且在该布局中我已经为我的网格单元格指定了一种格式
grid_item.xml
<com.timer.app.ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:layout_gravity="bottom"
android:textColor="@android:color/white"
android:background="#55000000"
/>
我想要完成的目标是在每个网格项目上单击,设置其相应的TextView以显示我设置的时间倒计时。
这就是我被困住的地方:我不知道如何创建与每个网格项相关的倒计时器,以及如何检测哪个网格项甚至被推送。
我知道常见的响应可能是CountDownTimer文档的链接,我已阅读并且没有向我解释如何创建say,我可以与每个griditem相关的计时器数组。
答案 0 :(得分:0)
我不确定我可以帮助倒数计时器,但我知道如何注册单击了哪个网格单元格。在过去,我通过将GridView的每个单元格设为一个按钮,并在创建每个单元格时为其添加标记来完成此操作。
calendar.xml
<GridView
android:id="@+id/calendar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="-1px"
android:numColumns="7"
android:verticalSpacing="-1px" >
</GridView>
gridcell.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/gridcell"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black"
android:background="@drawable/calendar_button_selector_blue"
android:textAppearance="?android:attr/textAppearanceMedium">
</Button>
</LinearLayout>
然后,在java:
GridView calendarView = (GridView) this.findViewById(R.id.calendar);
GridCellAdapter adapter = new GridCellAdapter(getApplicationContext(), R.id.gridcell);
adapter.notifyDataSetChanged();
calendarView.setAdapter(adapter);
public class GridCellAdapter extends BaseAdapter implements OnClickListener {
public GridCellAdapter(Context context, int textViewResourceId) {
super();
// ...
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
// ROW INFLATION
LayoutInflater inflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.gridcell, parent, false);
}
gridcell = (Button) row.findViewById(R.id.gridcell);
gridcell.setOnClickListener(this);
gridcell.setTag(R.id.TAG_ONE, 1);
}
@Override
public void onClick(View view) {
int value = (Integer) view.getTag(R.id.TAG_ONE);
}
}