【问题标题】:Android table row onClickListenerAndroid 表格行 onClickListener
【发布时间】:2014-08-28 01:25:42
【问题描述】:

我在尝试在 Android 中触发表格布局事件时遇到了一些问题。这些是我用来动态填充表格布局的代码:

private void BuildTable() {
    try {
        DatabaseAdapter mDbHelper = new DatabaseAdapter(Category.this);
        mDbHelper.open();
        CategoryController cc = new CategoryController(mDbHelper.open());
        Cursor mCur = mDb.rawQuery(cc.getAllCat(), null);

        if (mCur.getCount() != 0) {
            if (mCur.moveToFirst()) {
                // Setting table header
                TableRow row = new TableRow(this);
                row.setLayoutParams(new TableLayout.LayoutParams(
                        TableLayout.LayoutParams.MATCH_PARENT,
                        TableLayout.LayoutParams.WRAP_CONTENT));

                do {
                    int cols = mCur.getColumnCount();
                    row = new TableRow(this);

                    for (int j = 1; j < cols; j++) {
                        // Dynamically load data fetch from database
                        // into table layout
                        TextView tv = new TextView(this);
                        tv.setLayoutParams(new TableRow.LayoutParams(
                                TableRow.LayoutParams.MATCH_PARENT,
                                TableRow.LayoutParams.WRAP_CONTENT));
                        tv.setPadding(5, 5, 10, 5);
                        tv.setGravity(Gravity.LEFT);
                        tv.setText(mCur.getString(j));
                        row.addView(tv);
                        row.setId(j);
                    }

                    row.setClickable(true);

                    row.setOnClickListener(tablerowOnClickListener);
                    table_layout.addView(row);
                } while (mCur.moveToNext());
            }
        }
    } catch (SQLException mSQLException) {
        throw mSQLException;
    }
}

这是我的表格行 onClickListener:

private OnClickListener tablerowOnClickListener = new OnClickListener() {
    public void onClick(View v) {
        //Highlight selected row
        v.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));
        final int k = v.getId();
        Toast.makeText(Category.this, Integer.toString(k),
                Toast.LENGTH_SHORT).show();
    }
}; 

我的问题是当我突出显示某行并再次选择另一行时,上一个突出显示的行保持相同的突出显示背景颜色。不知道怎么解决?

提前致谢。

【问题讨论】:

  • 遍历 TableLayout 中的所有行,突出显示单击的行,并将其他行设置为常规颜色。
  • @MikeM。你介意给我举个例子吗?
  • 当然可以。给我一分钟;我在手机上。

标签: java android mysql sql onclicklistener


【解决方案1】:

如果table_layouttablerowOnClickListener在同一个范围内,改变Listener如下:

private OnClickListener tablerowOnClickListener = new OnClickListener()
{
    public void onClick(View v)
    {
        //Highlight selected row
        for (int i = 0; i < table_layout.getChildCount(); i++)
        {
            View row = table_layout.getChildAt(i);
            if (row == v)
            {
                row.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));
            }
            else
            {
                //Change this to your normal background color.
                row.setBackgroundColor(getResources().getColor(android.R.color.transparent));
            }
        }
        //...
    }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多