簡體   English   中英

Android表行onClickListener

[英]Android table row onClickListener

嘗試在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();
    }
}; 

我的問題是當我突出顯示某行並再次選擇另一行時,上一個突出顯示的行仍保持相同的突出顯示背景色。 我想知道如何解決嗎?

提前致謝。

提供的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));
            }
        }
        //...
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM