构建倒计时器网格视图的问题

时间:2014-04-13 11:42:59

标签: java android gridview timer countdowntimer

所以我有一个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相关的计时器数组。

1 个答案:

答案 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);
    }

}