0

私のアプリでは、ListView を使用して注文するアイテムを選択しました。注文するアイテムを選択すると、チェックが入り、注文ページに追加されます。メイン ページに戻ってアイテム リストに戻ると、選択したアイテムのチェックが外れますが、選択したアイテムは注文ページに表示されます。選択したアイテムは、手動で削除するまでチェックする必要があります。これを解決するのを手伝ってください。

これが私のコードです:

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


      final  ViewHolder holder;

        if (convertView == null) 
        {
            convertView = inflater.inflate(R.layout.selecteditemlistview, null);
            holder = new ViewHolder();

            holder.textViewSelectedText = (TextView)convertView.findViewById(R.id.selectedtext);
            holder.price=(TextView)convertView.findViewById(R.id.selectitemprice);
            holder.image=(ImageView)convertView.findViewById(R.id.selectitemimage);
            holder.qty=(EditText)convertView.findViewById(R.id.selectqty);
            holder.total=(TextView)convertView.findViewById(R.id.price);               
            holder.delete = (Button) convertView.findViewById(R.id.delete);

            holder.uncheck = (CheckBox)convertView.findViewById(R.id.bcheck);

            convertView.setTag(holder);
        }
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }
        String amount=holder.qty.getText().toString();
        final Double price1=Double.parseDouble(itemprice.get(position));
        int qut=Integer.parseInt(holder.qty.getText().toString());
        Double total=(price1*qut);
        holder.textViewSelectedText.setText(arr1.get(position));
        holder.price.setText(itemprice.get(position));
        holder.image.setImageBitmap(itemimage.get(position));
        holder.total.setText(String.valueOf(total));


        holder.delete.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                 arr1.remove(position);
                 itemimage.remove(position);
                 itemprice.remove(position);
               //  holder.uncheck.setChecked(false);
                 View parent = (View)v.getParent(); 
                 CheckBox chkBox = (CheckBox)parent.findViewById(R.id.bcheck); 
                 if ((holder.arr1==true)&&(holder.uncheck.isChecked()))
                     {holder.uncheck.setChecked(false);
                     }
                 notifyDataSetChanged();


            }

        });



      holder.qty.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(!hasFocus)
            {

                 int position = v.getId();      
                final EditText Caption = (EditText) v;
                Caption.setFocusable(true); 
                holder.qty.setFocusable(true);
                int q=Integer.parseInt(holder.qty.getText().toString());
                Double result=(price1 * q);
                System.out.println(result);              
                holder.total.setText(String.valueOf(result));
                                }
        }
    });


        return convertView;     
    }

    class ViewHolder      
    {
         protected boolean arr1;
        public CheckBox uncheck;
        public Button delete;
         public TextView mTextView;

        TextView textViewSelectedText = null;
        TextView price=null;
        ImageView image=null;      
        EditText qty=null;
        TextView total=null;
    }  
4

1 に答える 1

0

私が知っている解決策は手動です。選択した項目のリストを ListView に渡す必要があります。

あなたの主な活動

Intent intent = new Intent(this, YourListViewActivity.class);
// parcelables or a List of indexes (your choice but I prefer Parcelables)
// I assume that you have your selection stored in a List to work with it
// make SomeKey as a constant
intent.putParcelableArrayListExtra("SomeKey", listOfYourObjectsAsParcelables);
startActivityForResult(intent, requestCode); 

選択アクティビティ- ListActivity を拡張すると仮定

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // load selection from the intent
    List<YourParcelableObject> parcelables = getIntent().getParcelableArrayListExtra("SomeKey");

    if (parcelables != null) {
        // convert to YourObject
        List<YourObject> selectedObjects = convert(parcelables);

        // iterate over the list and check items        
        for (int i = 0; i < getListView().getAdapter().getCount(); i++) {
            YourObject object = (YourObject) getListView().getAdapter().getItem(i);
            if (selectedObjects.contains(object)) {
                getListView().setItemChecked(i, true);
            }
        }
    } 
}

これは単なるスニペットであり、テストはしていませんが、アイデアが得られるはずです。

于 2012-05-23T09:13:29.613 に答える