单击 TextView 时显示 ArrayAdapter

Show ArrayAdapter when TextView is clicked

众所周知,我们可以将 ArrayAdapter 设置为 Spinner 或 ListView 以将数据填充到这些视图中。

在我的应用程序中有 testView。我想在单击 TextView 时将下方的 arrayAdapter 的项目填充到 TestView。

请查找图片:- 在图片中,如果用户点击 4 Selected,则会显示列表。

如果用户点击屏幕的其他部分,列表将消失。

在我的应用程序中,用户将能够发送消息。在发送消息之前,用户需要 select 他想从列表中向其发送消息的人(如上图所示)。

假设他 select 5 人然后在顶部会显示“5 Selected”,当他点击“5 Selected”时我需要在顶部显示 selected person屏幕,当用户点击屏幕上的其他地方时,列表将消失。

可扩展列表视图的问题是当它展开时会在同一屏幕上展开,但我希望它会在屏幕顶部展开,这样不会干扰其他视图,例如微调器下拉列表。

将当前展开的组位置存储在一个变量中。在 onGroupExpanded 中执行以下操作。

private int lastExpandedPosition = -1; 私有 ExpandableListView lv; //你的可扩展列表视图 ...

lv.setOnGroupExpandListener(新的 OnGroupExpandListener() {

@Override
public void onGroupExpand(int groupPosition) {
        if (lastExpandedPosition != -1
                && groupPosition != lastExpandedPosition) {
            lv.collapseGroup(lastExpandedPosition);
        }
        lastExpandedPosition = groupPosition;
}

});

spinner.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent,View view, int i, long l) {

            String dis_name = spinner.getSelectedItem().toString();
        if (i>=1) {
                Dis_list.remove(" ");

            } 

        }



    });

当下拉列表消失时再次 Dis_list.set(0," ")

以上都不适合我。无论如何感谢你们的时间。

我通过使用 AlerDialog 实现了这一点,并将其放在顶部。

public void showSelectedPeople(View v) {
    ArrayList<String> aListNoOfSelection = new ArrayList<String>();

    if (rows != null) {
        for (PostOptionsRow postOptionsRow : rows) {
            if (postOptionsRow.getType() == PostOptionsRow.TYPE_GROUP
                    && !postOptionsRow.hasChildren()
                    && postOptionsRow.isSelected()) {
                aListNoOfSelection.add(postOptionsRow.getTitle());
            } else if (postOptionsRow.getType() == PostOptionsRow.TYPE_GROUP
                    && postOptionsRow.hasChildren()
                    && postOptionsRow.getChildren() != null) {
                for (PostOptionsRow postOptionsRowInner : postOptionsRow
                        .getChildren()) {
                    if (postOptionsRowInner.isSelected()) {
                        aListNoOfSelection.add(postOptionsRowInner
                                .getTitle());
                    }
                }
            }
        }
    }

    aAdapterNoOfSelection = new NoOfSelectionAdapter(context, 0, aListNoOfSelection);

    if (aListNoOfSelection.size() == 0) {
        Toast.makeText(context, "Please select a recipient for this post.", Toast.LENGTH_SHORT).show();
        return;
    }

    ListView listView = new ListView(this);
    listView.setBackgroundColor(Color.WHITE);
    listView.setAdapter(aAdapterNoOfSelection);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setView(listView);

    AlertDialog dialog = builder.create();
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

    wmlp.gravity = Gravity.TOP | Gravity.LEFT;
    wmlp.x = 55; // x position
    wmlp.y = 25; // y position

    dialog.show();

}