1

複数のアイテムを持つリストビューがあります。ボタンをクリックしてアイテムの値を更新し、ボタンをクリックしてすべてのアイテムの値を取得したいのですが、それができません。助けてくださいこの機能を取得する

活動コード

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_ItemValue);
        setContentView(R.layout.activity_iween_booking_page);
        listView = (ListView) findViewById(R.id.passengerList);

            showPassengerListView(passengerList);

        }

    getValue.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

            if(){


            }else{
                //Here i have to get all the value of the listview items in a array
            } 

        }
    });


    }

    private void showPassengerListView(final String[] passengerList) {

        listView.setAdapter(new PassengerListUpdate(passengerList));
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

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

        setValueDialog.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                isSuccess= true;

                if(isSuccess){
                    dialog.cancel();
                    //Here i Have to Update the item at position with some value
                }
            }
        });
    }


    public void goBack(View v) {
        finish();
    }

    class PassengerListUpdate extends BaseAdapter {
        String[] ItemValue;

        public PassengerListUpdate(String[] text) {
            ItemValue = text;
        }

        public int getCount() {
            // TODO Auto-generated method stub
            return ItemValue.length;
        }

        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return null;
        }

        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = getLayoutInflater();
            View vi;
            vi = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
            TextView ItemValue;

            ItemValue = (TextView) vi.findViewById(android.R.id.text1);
            ItemValue.setText(ItemValue[position]);
            return (vi);
        }
    }

アイテムの値を設定する方法とリストビューの値を取得する方法を教えてください

4

2 に答える 2

0

まず、ListView 内の値全体を取得するために。アダプター内のアイテムの数を取得し、その位置によって値を 1 つずつ取得できます。

    ArrayList<String> results = new ArrayList<String>();
    final int count = mMyAdapter.getCount();
    for( int i = 0; i < count; ++i ){
        String item = mMyAdapter.getItem(i);
        results.add(item);
    }
    return results;

次に、ListView の値を追加または更新するには、ArrayAdapter 自体がメソッドの追加 / 削除 / 挿入をサポートしているため、一般に、 BaseAdapter を実装するよりもArrayAdapterを拡張する方がはるかに簡単です。例えば、

public class MyAdapter extends ArrayAdapter<String> {

    public MyAdapter(Context context) {
        super(context, 0);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        View vi;
        vi = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
        TextView ItemValue;

        ItemValue = (TextView) vi.findViewById(android.R.id.text1);
        ItemValue.setText(ItemValue[position]);
        return (vi);
    }
}

また、アダプタの値 quiet を直接更新できます。

mMyAdapter.add("Add Item");
mMyAdapter.remove("Remove Item");
mMyAdapter.insert("Insert Item", 0);

ジョブが終了したら、アダプタの notifyDatSetChanged() メソッドを呼び出して UI を更新することができます。これは、データが更新されるたびに新しいアダプタをセットアップするよりも効率的な方法だと思います。

mMyAdapter.notifyDataSetChanged();
于 2013-08-21T09:48:04.823 に答える