【问题标题】:Android SQLite Custom ListAdapter for AlertDialog SingleChoiceItems用于 AlertDialog SingleChoiceItems 的 Android SQLite 自定义 ListAdapter
【发布时间】:2014-03-05 08:04:07
【问题描述】:

我想创建一个对话框,用户可以在其中选择一个单选选项并单击确定。列表项必须同时包含来自 sqlite db 的 id 和文本(但仅向用户显示文本)。由于 setSingleChoiceItems 接受 ListAdapter,我可能需要创建一个自定义列表适配器并从我的数据库选择结果中加载项目。我实际上需要帮助来创建这个自定义 ListAdapter。只有在用户单击“确定”后,我才需要获取所选项目的文本和 id 以保存到相应的 SharePreferences 字段中。

【问题讨论】:

  • 你有没有为此尝试过?
  • 我试图声明一个 ListAdapter,它被作为我的 setSingleChoiceItems 上的参数来完成,尽管我需要帮助来更新这些方法: public View getView(int position, View convertView, ViewGroup parent)、public long getItemId(int position) 和其他创建 ListAdpter 对象的方法。

标签: android sqlite android-alertdialog listadapter


【解决方案1】:

好的,我设法设置了我的自定义列表适配器,但不幸的是这些项目没有显示为收音机,这是我的代码:

    public void changePocket(View view)
{   
    ListAdapter liAdabter = new ListAdapter() {

        @Override
        public void unregisterDataSetObserver(DataSetObserver observer) {
            // TODO Auto-generated method stub

        }

        @Override
        public void registerDataSetObserver(DataSetObserver observer) {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean isEmpty() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean hasStableIds() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public int getViewTypeCount() {

            return 1;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            PocketsObj pocketListItems = pocketsList.get(position);

            if (convertView == null) {

                LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                row = inflater.inflate(layoutResourceID, parent, false); 
            }

            TextView idText = (TextView) row.findViewById(R.id.pocket_id);
            if (idText != null) {
                idText.setText(String.valueOf(pocketListItems._pocket_id));
            }
            TextView nameText = (TextView) row.findViewById(R.id.pocket_name);
            if (nameText != null) {
                nameText.setText(pocketListItems._pocket_name);
            } 
            return row;
        }

        @Override
        public int getItemViewType(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public Object getItem(int position) {

            return pocketsList.get(position);
        }

        @Override
        public int getCount() {

            return pocketsList.size();
        }

        @Override
        public boolean isEnabled(int position) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean areAllItemsEnabled() {
            // TODO Auto-generated method stub
            return false;
        }
    };

     AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this, 2);            
     alertBuilder.setTitle(R.string.change_pockets)
                .setSingleChoiceItems(liAdabter, 1,
                  new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub

                        }
                   })
                .setPositiveButton(R.string.change_pockets_ok, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                })
                .setNegativeButton(R.string.change_pockets_cancel, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        return;                         
                    }
                });

    alertBuilder.show();
}

        <TextView
        android:id="@+id/pocket_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible" >
    </TextView>

    <TextView
        android:id="@+id/pocket_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:layout_margin="5dp" >
    </TextView>

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多