有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检索动态创建的布局ID并将其与列表项匹配

我有一个对象列表(l),其中包含从数据库检索到的数据。我用这些数据动态地创建一个表布局,并为表单元格添加一个id

row.setLayoutParams(new TableLayout.LayoutParams(
    TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
    row.setId(View.generateViewId());

rb.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
rb.setId(View.generateViewId());
rb.setText(l.getText());
rb.setOnClickListener(handleOnClickText(rb));

这就是我感兴趣的处理方法

View.OnClickListener handleOnClickText(final TextView text) {
    return new View.OnClickListener() {
        public void onClick(View v) {
            // TODO
            // retrieve id of clicked item
            // match id to list entry
            // do something with it
        }
    };
}

我的问题是如何将单击项的id(以及如何检索它)与创建它的列表条目相匹配,以便为数据库创建查询

我在表中有多个元素,它们是由一个列表条目创建的(一些TextView和一个按钮,但问题对所有人都是一样的)

可能吗

我想到的另一个解决方案是创建映射(字典?)将id添加到列表项中(如何在setId( )之后检索id以将其添加为值?),但是如何检索id仍然是一个问题


共 (1) 个答案

  1. # 1 楼答案

    是的,你可以用地图(字典)。 首先:

    public final static Map<String, Integer> ID_MAP = new HashMap<String, Integer>();
    

    然后:

    int id = View.generateViewId();
    ID_MAP.put("key_1", id);
    rb.setId(id);
    

    并使用map key获取特定id,如下所示:

    int id = ID_MAP.get("key_1"); 
    //do other things