单击TextView时显示ArrayAdapter

时间:2015-04-09 06:38:38

标签: android android-adapter android-adapterview

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

在我的应用程序中,testView就在那里。我想在单击TextView时将下面的arrayAdapter项填充到TestView。

请找到图片: - 在图像中,如果用户点击4选择,则显示列表。

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

enter image description here enter image description here

在我的应用中,用户可以发送消息。在发送消息之前,用户需要选择要从列表中发送消息的人(如上图所示)。

假设他选择5个人,然后在顶部显示“5 Selected”,当他点击“5 Selected”时,我需要在屏幕顶部显示选定的人,当用户点击屏幕上的其他位置时然后列表就会消失。

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

2 个答案:

答案 0 :(得分:1)

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

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

lv.setOnGroupExpandListener(new OnGroupExpandListener(){

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

});

spinner.setOnItemSelectedListener(new 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,&#34;&#34;)

答案 1 :(得分: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();

}