单击按钮时如何更新列表视图?

2024-01-25

    public class MainActivity extends Activity {
    ListView list;
    String[] abc={"1","2","3"};
    MyCustomAdapter adapter;
    Button refresh;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            list=(ListView) findViewById(R.id.list);
             refresh=(Button) findViewById(R.id.refresh);
             adapter=new MyCustomAdapter(MainActivity.this,abc);
            list.setAdapter(adapter);

        }
         private class MyCustomAdapter extends BaseAdapter {
                private final Context context;
                private ArrayList mData = new ArrayList();
                private LayoutInflater mInflater;
                private String[] hashmap;
                ViewHolder holder = null;
                public MyCustomAdapter(Context context,String[] hashMaps) {
                    super();
                    this.context = context;
                    this.hashmap = hashMaps;
                    mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                }
                public int getCount() {

                    return hashmap.length;

                }


                public Object getItem(int position) {
                    return hashmap.length;
                }


                public long getItemId(int position) {

                    return position;
                }

                @Override
                public void notifyDataSetChanged() // Create this function in your adapter class
                {
                    super.notifyDataSetChanged();
                }
                @Override
                public View getView(final int position, View convertView, ViewGroup parent) {
                    System.out.println("getView " + position + " " + convertView);
                   // final ViewHolder holder = null;
                    if (convertView == null) {
                        convertView = mInflater.inflate(R.layout.view1, null);
                        holder = new ViewHolder();
                        holder.textView = (TextView)convertView.findViewById(R.id.text);
                        holder.btn = (Button)convertView.findViewById(R.id.refresh);
                        convertView.setTag(holder);
                    } else {
                        holder = (ViewHolder)convertView.getTag();
                    }
                    holder.textView.setText(hashmap[position]);

                    holder.btn.setOnClickListener(new OnClickListener(){  
                           @Override
                          public void onClick(View v) {
                             RelativeLayout rl = (RelativeLayout)v.getParent();
                            holder.textView = (TextView)rl.getChildAt(position);
                            Log.i("position",String.valueOf(position));
                            holder.textView.setText("10");
                           }
                         });

                    return convertView;

                }

            }

            public static class ViewHolder {
                public TextView textView;
                public Button btn;
            }




    }

View.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:id="@+id/real"
    >
    <TextView 
                android:id="@+id/text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:text="Text"
                android:layout_marginTop="15dp"
                android:layout_marginLeft="20dp"
                />
    <Button 
                android:id="@+id/refresh"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/text"
                android:text="button"
                 android:layout_marginLeft="20dp"
                />
    </RelativeLayout>

在我的 ListView 中,当我单击按钮时,适配器视图中的值不会更改。如何解决此问题?该列表包含每个位置的 3 个值。因此,当我单击单击位置的按钮时,该值将发生变化,而不是旧值。


将 getView 方法代码更改如下。

@Override
        public View getView(final int position, View convertView,ViewGroup parent) {
            View vi = convertView;
            final TextView textView;
            if (convertView == null)
                inflater = (LayoutInflater)    context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            vi = inflater.inflate(R.layout.vi, null);

            textView = (TextView) vi.findViewById(R.id.text);
            Button btn = (Button) vi.findViewById(R.id.refresh);
            textView.setText(hashmap[position]);
            btn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.i("position  ", position + "");
                    textView.setText("10");
                }
            });

            return vi;
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击按钮时如何更新列表视图? 的相关文章

  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef

随机推荐