草庐IT

android - 更新 Android 中 ListView 项的值

coder 2023-12-11 原文

我有一个显示列表的 ListView 。所以在单击 ListView 时我有一个 customDialog。因为我正在从用户那里获取一些值。所以一旦用户输入详细信息并单击确定按钮,然后我必须从 listview 更新该项目的值,当 listview 的所有项目都已更新时,然后将其与先前的值进行比较以检查是否所有项目都已更新。帮我解决这个我怎么能这样做

Activity 代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_iween_booking_page);
        intent = getIntent();
        isReturn  = (Boolean) intent.getExtras().get("isReturn");
        searchParam = (HashMap<String,String>) intent.getExtras().get("searchParam");
        listView = (ListView) findViewById(R.id.passengerList);
        emailId = (TextView)findViewById(R.id.emailid);
        continuebooking = (ImageView)findViewById(R.id.continuebooking);
        firstName= (EditText)findViewById(R.id.firstName);
        lastName =(EditText)findViewById(R.id.LastName);
        mobileNumber =(EditText)findViewById(R.id.mobileNumber);


        setTittle();
        if(searchParam.get("NoOfChild").equals("0") && searchParam.get("NoOfInfant").equals("0")&& searchParam.get("NoOfAdult").equals("1")){

        } else {


            passengerList = getPassengerList(passengerInfo);
            showPassengerListView(passengerList);

        }

        continuebooking.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if(searchParam.get("NoOfChild").equals("0") && searchParam.get("NoOfInfant").equals("0") && searchParam.get("NoOfAdult").equals("1")){
                    if(firstName.getText().toString().trim().equalsIgnoreCase("")){
                        firstName.setError("Enter FirstName");
                    }
                    if(lastName.getText().toString().trim().equalsIgnoreCase("")){
                        lastName.setError("Enter LastName");
                    }
                    if(mobileNumber.getText().toString().trim().equalsIgnoreCase("")){
                        mobileNumber.setError("Enter Mobile No.");
                    }
                }else{
                     int count = listView.getAdapter().getCount();
                     listData = new String[count];
                     for (int i = 0; i < count; i++) {
                            listData[i] = listView.getAdapter().getItem(i).toString();

                     }
                     for(int i=0;i<listView.getAdapter().getCount();i++){
                         for(int j=0;j<count;j++){
                             if(listData[j]==listView.getAdapter().getItem(i).toString()){
                                 Log.d("listData data", listView.getAdapter().getItem(i).toString());
//                              View v=listView.getChildAt(i);
//                              TextView tv=(TextView) v.findViewById(android.R.id.text1);
//                              tv.setError("Please change the data");
                              }
                        }
                     }
                    } 


            }
        });



    }



    private void showPassengerListView(final String[] passengerList) {
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, passengerList);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
//              int itemPosition     = position;
//              String  itemValue    = (String) listView.getItemAtPosition(position);
                View v=listView.getChildAt(position);
                TextView tv=(TextView) v.findViewById(android.R.id.text1);
                tv.setError(null);
                passengerInformationPopup(passengerList,position);
            }
        });
    }






    public void passengerInformationPopup(final String[] passengerList, final int position) {
        final Dialog dialog= new Dialog(Test.this,R.style.Dialog_Fullscreen);
        dialog.setContentView(R.layout.passenger_details_dialog); 


        final EditText firstNameDialog;
        final EditText lastNameDialog;
        ImageView continueBooking;
        dateofBirth = (TextView)dialog.findViewById(R.id.dateofBirth);
        firstNameDialog = (EditText)dialog.findViewById(R.id.firstName);
        lastNameDialog =(EditText)dialog.findViewById(R.id.LastName);
        continueBooking =(ImageView)dialog.findViewById(R.id.continuebooking);
        if((passengerList[position].contains("Child"))|| (passengerList[position].contains("Infant"))){
            dateofBirth.setVisibility(View.VISIBLE);
         }else{
                dateofBirth.setVisibility(View.GONE);
        }
        dateofBirth.setClickable(true);
        dialog.show();

        continueBooking.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                isSuccess= true;
                if(firstNameDialog.getText().toString().trim().equalsIgnoreCase("")){
                    firstNameDialog.setError("Enter FirstName");
                    isSuccess= false;
                }
                if(lastNameDialog.getText().toString().trim().equalsIgnoreCase("")){
                    lastNameDialog.setError("Enter LastName");
                    isSuccess= false;
                }
                if((passengerList[position].contains("Child"))|| (passengerList[position].contains("Infant"))){
                    if(dateofBirth.getText().toString().trim().equalsIgnoreCase("")){
                        dateofBirth.setError("Date of Birth Can't be blank");
                        isSuccess= false;
                    }
                 }
                if(isSuccess){
                    dialog.cancel();
                    View v=listView.getChildAt(position);
                    TextView tv= (TextView) v.findViewById(android.R.id.text1);
                    tv.setText(firstNameDialog.getText().toString().trim().toString()+" "+lastNameDialog.getText().toString().trim().toString());


                }
            }
        });

    }

passengerInformationPopup 函数我必须更新 ListView 的项目值。在创建 continueBooking 时我必须检查是否所有项目都已更新

Before Updation After Updation

最佳答案

切勿直接更新 ListView 项。更新存储中的数据并调用适配器上的 notifyDataSetChanged

关于android - 更新 Android 中 ListView 项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18327708/

有关android - 更新 Android 中 ListView 项的值的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  3. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  4. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  5. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  6. ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值 - 2

    我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案

  7. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  8. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  9. ruby - 获取数组中的值并最小化某个类属性的最优雅的方法是什么? - 2

    假设我有以下类(class):classPersondefinitialize(name,age)@name=name@age=ageenddefget_agereturn@ageendend我有一组Person对象。是否有一种简洁的、类似于Ruby的方法来获取最小(或最大)年龄的人?如何根据它对它们进行排序? 最佳答案 这样做会:people_array.min_by(&:get_age)people_array.max_by(&:get_age)people_array.sort_by(&:get_age)

  10. objective-c - 在设置 Cocoa Pods 和安装 Ruby 更新时出错 - 2

    我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U

随机推荐