Android 将数据从 ListView 传递到弹出窗口

标签 android listview popup

我正在为我的问题寻找解决方案,但仍然无法弄清楚。我想达到什么目的?

  1. 我有一个 Data对象,代表我正在使用的数据。只是一个简单的类,有几个 String变量,它还实现了 Parcelable .
  2. 我填充 Data使用外部 Web 服务对象并获得 List<Data> dataList = new ArrayList<Data>();与结果。我将此列表发送给另一个 Activity .
  3. 我得到一个 DataAdapter延伸ArrayAdapter<Data>查看结果,一切正常,我只是设置我的适配器并在 ListView 中显示结果.

    data = getIntent().getParcelableArrayListExtra("数据");

    dataAdapter = new DataAdapter(this, R.layout.activity_results_list,data);

    list.setAdapter(dataAdapter);

  4. 现在事情开始变得棘手了。在每个列表元素上我添加了一个按钮

    Button... android:onClick="showPopup"
    

showPopup方法创建一个 PopupWindow然后我用我的布局给它充气。

LinearLayout viewGroup = (LinearLayout) findViewById(R.id.table_phones);

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View layout = layoutInflater.inflate(R.layout.popup_phones, viewGroup);

我的问题是:如何将我的数据传递给那个弹出窗口??例如,我只想传递来自 Data 的一些文本与给定 ListView 关联的对象项目并将其显示在我的弹出窗口中。

如果您需要,我可以粘贴更多代码。

最佳答案

首先,您已将选定的列表项转换为集合对象。然后您可以将其转换为数组列表。然后您可以从该数组列表访问并将数据填充到您的弹出窗口。示例代码:

lv1.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
        Collection<Object> str = mylist.get(arg2).values();
        ArrayList<Object> al1 = new ArrayList<Object>(str);

        LayoutInflater layout = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        View popupView = layout.inflate(R.layout.your_popup, null);

        popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);

        TextView tv1 = (TextView) popupView.findViewById(R.id.textView3);
        TextView tv2 = (TextView) popupView.findViewById(R.id.textView4);
        TextView tv3 = (TextView) popupView.findViewById(R.id.textView5);
        TextView tv4 = (TextView) popupView.findViewById(R.id.textView6);
        TextView tv5 = (TextView) popupView.findViewById(R.id.textView7);

        tv1.setText(al1.get(1));
        tv2.setText(al1.get(2));
        tv3.setText(al1.get(3));
        tv4.setText(al1.get(4));
        tv5.setText(al1.get(5));

        Button close = (Button) popupView.findViewById(R.id.close);
        close.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                popupWindow.dismiss();
            }
        });
    }
});

希望对您有所帮助。

谢谢。

关于Android 将数据从 ListView 传递到弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759935/

相关文章:

几秒钟后Android webview停止播放

android - 如何在 PreferenceFragment 中使用 DatePickerFragment 获取日期

javascript - 传单 map 中带有 Leaflet.markercluster 的弹出窗口

javascript - 弹出窗口中的动态内容

android - 如何使用选择器设置初始 ListView 项目背景颜色

java - 使用 netbeans run 出现弹出窗口,但不使用 jar 文件,JAVAFX

android - 如何解决有关导出的 Firebase 消息服务实现的 android lint 投诉?

android - 给定 URL 在 android 中播放视频

android - 单击按钮问题后在 EditText ListView 中获取文本内容

android - 如何使用 RecyclerView 在 ListView 中更改播放/暂停音频图标?