5

リストを表示しているリストビューがあります。リストビューをクリックすると、カスタムダイアログがあります。ユーザーからいくつかの値を取得しています。ユーザーが詳細を入力して[OK]ボタンをクリックしたら、リストビューからそのアイテムの値を更新する必要があり、リストビューのすべてのアイテムが更新されたら、それを以前の値と比較して、すべてのアイテムが更新されているかどうかを確認します。

活動コード

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 の作成時に、すべての項目が更新されているかどうかを確認する必要があります。

アップデート前 アップデート

4

2 に答える 2

2

ArrayAdapterリストのデータを含むが必要になります。次に、その配列のデータを操作するとき.notifyDataSetChanged();に、adabter を呼び出してビューを更新できます。同じ配列リストでなければならないことに注意してください! arraylist = new ArrayList();そのため、参照を破棄する呼び出しはできません。代わりに使用arraylist.clear();してからarraylist.addAll(data);

次に例を示します。

    public class GroupsListAdapter extends ArrayAdapter<Object> {

    /**
     * Constructor
     * 
     * @param context
     *            Context
     * @param objects
     *            Array of objects to show in the list.
     */
    public GroupsListAdapter(Context context, ArrayList<Object> objects) {
        super(context, R.layout.row, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        Object = getItem(position);

        /* Initialize strings */
        String nameText = group.getName();
        boolean upToDate = group.isUpToDate();

        /* Get the layout for the list rows */
        View rowView = convertView;
        if (rowView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflater.inflate(R.layout.row, parent, false);
        }
            rowView.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                         //do stuff here
                    }
            });


        return rowView;
    }
}
于 2013-08-20T06:29:50.027 に答える