如何动态地将表(sqlite)中的行添加到布局? (机器人)

时间:2014-01-27 01:19:14

标签: java android sqlite

我正在尝试从我的数据库中获取所有行并将其添加到当前布局中,同时使布局中的每一行都可单击以将用户带到具有id的新屏幕...

这是我当前的代码,但坚持这部分...我明白我可以放一个onClickListener,但那么它必须是一个按钮吗?

对于可视化表示,请参阅任何设备上的记事本应用程序,其中每个音符标题出现并点击它会将您带到该音符。

public class MainActivity extends Activity implements OnClickListener {

    private Button add_new_dictionary;

    // Database helper
    private DatabaseHelper db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // db setup
        db = new DatabaseHelper(getApplicationContext());

        // get all dictionaries
        List<db_dictionary> allDictionaries = db.getAllDictioniaries();
        for (db_dictionary dictionary_found : allDictionaries) {
            // create new view for each dictionary name include id and make it
            // dynamic and include onclick to take to dictionary_view screen
            Button dictionary_button = new Button(this);

        }

        add_new_dictionary = (Button) findViewById(R.id.add_new_dictionary);

    }

@Override
    public void onClick(View v) {
        if (v == add_new_dictionary) {
            Intent add_new_dictionary_intent = new Intent(MainActivity.this,
                    add_new_dictionary.class);
            startActivity(add_new_dictionary_intent);
        }

    }

}

重新讨论这个问题:我如何动态地从我的数据库中获取行并根据查询返回的结果数量动态地将其添加到我的布局中? (但是,行应该能够指向具有字典ID的新屏幕)

2 个答案:

答案 0 :(得分:1)

android中的所有视图都可以实现OnClickListener接口。所以不,它不一定是一个按钮。

由于您决定使用该活动来处理此问题,因此您需要告诉您的代码将事件传递给您的实施活动。

// create new view for each dictionary name include id and make it
// dynamic and include onclick to take to dictionary_view screen
Button dictionary_button = new Button(this);
dictionary_button.setOnClickListener(this);

我用来存储信息的技巧是setTag方法,它允许您在onClick期间检索正确的引用:

dictionary_button.setTag(some_record_id);

然后再检索它:

@Override
    public void onClick(View v) {
        if (v == add_new_dictionary) {
            Intent add_new_dictionary_intent = new Intent(MainActivity.this,
                    add_new_dictionary.class);
            startActivity(add_new_dictionary_intent);
        }
        else (
            Object tag = v.getTag();
            //now launch the detail activity using the data from the tag
        }
    }

你应该真正研究ListAdapters和游标来正确地做到这一点,但是这个方法应该让你现在就去了

答案 1 :(得分:0)

如果您需要从数据库中选择数据并将其显示为列表(获取点击事件),您应该查看CursorAdapter和ListView

http://developer.android.com/reference/android/widget/CursorAdapter.html

http://developer.android.com/reference/android/widget/ListView.html

您可以在网上找到关于如何使用cursoradapter和listview的许多示例