Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android表行onClickListener_Java_Android_Mysql_Sql_Onclicklistener - Fatal编程技术网

Java Android表行onClickListener

Java Android表行onClickListener,java,android,mysql,sql,onclicklistener,Java,Android,Mysql,Sql,Onclicklistener,我在Android中尝试触发表布局上的事件时遇到了一些问题。以下是我用来动态填充表格布局的代码: private void BuildTable() { try { DatabaseAdapter mDbHelper = new DatabaseAdapter(Category.this); mDbHelper.open(); CategoryController cc = new CategoryController(mDbHelper.

我在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;
    }
}
我的问题是,当我高亮显示某一行并再次选择另一行时,先前高亮显示的行仍保持相同的高亮显示背景色。我想知道如何解决它


提前感谢。

提供的
表格布局与
表格RowOnClickListener
在同一范围内,请按如下方式更改侦听器:

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));
            }
        }
        //...
    }
};
private OnClickListener表rownclicklistener=new OnClickListener()
{
公共void onClick(视图v)
{
//突出显示选定行
对于(int i=0;i
遍历TableLayout中的所有行,突出显示单击的行,并将其他行设置为常规颜色。@MikeM。你能给我举个例子吗?当然可以。给我一分钟;我在手机上。
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));
            }
        }
        //...
    }
};