1

カスタムリストビューを使用して、sqliteデータベースのデータを表示しています。テキストビュー、ボタン、チェックボックスを持つ私のリストアイテム。次のタスクを実行するアダプタを教えてください。

  1. すべての文字列値は、等しいテキストビューで更新されます
  2. ブール値に基づいて、チェックボックスをオン/オフにする必要があります。
  3. ボタンをクリックすると、新しい画面が表示され、ボタンのIDも渡されます。

    今何をすべきか教えてください。新しいアイデアも歓迎します。

    私のコードに従ってください。

        public class GuestListAdapter extends BaseAdapter implements OnClickListener{
            Context context;
            ArrayList<String> arrayListFirstName;
            ArrayList<String> arrayListLastName;
            ArrayList<String> arrayListGuests;
            ArrayList<String> arrayCustomOne;
            ArrayList<String> arrTicketId;
            private ArrayList<Boolean> checks=new ArrayList<Boolean>();
            public GuestListAdapter(Context mcontext, ArrayList<String> arrListFN,
                    ArrayList<String> arrListLN, ArrayList<String> arrListGuest,
                    ArrayList<String> arrTicketID,ArrayList<String> arrCustOne) {
                arrayListFirstName = arrListFN;
                arrayListLastName = arrListLN;
                arrayListGuests = arrListGuest;
                arrayCustomOne = arrCustOne;
                context = mcontext;
    
                for (int i = 0; i < arrayListFirstName.size(); i++) {
                    checks.add(i, false);
                }
            }
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return arrayListFirstName.size();
            }
    
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return arrayListFirstName.get(position);
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public View getView(int position, View view, ViewGroup parent) {
                // TODO Auto-generated method stub
                if (view == null) {
                    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
                    view = inflater.inflate(R.layout.guest_list_item, parent, false);
                }
    
                final String dataModel = (String) arrayListFirstName.get(position);
    
                TextView txtFirstName = (TextView) view
                        .findViewById(R.id.txt_firstname);
                txtFirstName.setText(arrayListFirstName.get(position));
                TextView txtLastName = (TextView) view.findViewById(R.id.txt_lastname);
                txtLastName.setText(arrayListLastName.get(position));
                TextView txtGuestCount = (TextView) view
                        .findViewById(R.id.txt_guest_count);
                txtGuestCount.setText(arrayListGuests.get(position));
                Button btnInfo = (Button) view.findViewById(R.id.btn_info);
                // btnInfo.setId(position);
                CheckBox checkBoxCheckins = (CheckBox) view
                        .findViewById(R.id.checkBoxIsCheckedIn);
                checkBoxCheckins.setTag(Integer.valueOf(position));
    
                btnInfo.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // int id = Integer.parseInt(v.getTag().toString());
    
                        // Log.d("", "Clicked ID "+id);
                        Intent intent = new Intent(context, InfoScreen.class);
                        context.startActivity(intent);
                        System.out.println("Adap button **********");
    
                    }
                });
                checkBoxCheckins
                        .setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
                            @Override
                            public void onCheckedChanged(CompoundButton buttonView,
                                    boolean isChecked) {
                                System.out.println("Adap checked **********");
                                Integer integ = (Integer)buttonView.getTag();
    
                                   checks.set(integ.intValue(), false);
                            }
                        });
                if (checks.get(position)) {
                    checkBoxCheckins.setChecked(checks.get(position));
                      // do some stuff if wanted..
                    } else {
                        checkBoxCheckins.setChecked(checks.get(position));
                      // do some stuff if wanted..
                    }
                return view;
            }
    
            @Override
            public void onClick(View view) {
                // TODO Auto-generated method stub
                 Integer index = (Integer)view.getTag();
                 boolean state = checks.get(index.intValue());
    
                 checks.set(index.intValue(), !state);
            }
    
        }
    
    
    this is my setter class
    
    public class GuestList {
    
        String mFirstName;
        String mLastName;
        String mTicketI;
        String mGuestCount;
    
        public String getmFirstName() {
            return mFirstName;
        }
    
        public void setmFirstName(String mFirstName) {
            this.mFirstName = mFirstName;
        }
    
        public String getmLastName() {
            return mLastName;
        }
    
        public void setmLastName(String mLastName) {
            this.mLastName = mLastName;
        }
    
        public String getmTicketI() {
            return mTicketI;
        }
    
        public void setmTicketI(String mTicketI) {
            this.mTicketI = mTicketI;
        }
    
        public String getmGuestCount() {
            return mGuestCount;
        }
    
        public void setmGuestCount(String mGuestCount) {
            this.mGuestCount = mGuestCount;
        }
    
    }
    

    このようなarraylistを送信するlistviewクラスでは、

    cursorAdapter = new GuestListAdapter(GuestListScreen.this,
                arrFirstName, arrLastName, arrGuests, arrTicketId, arrCustomOne);
        listViewGuests.setAdapter(cursorAdapter);
    
4

1 に答える 1

0

これにはBaseAdapterを使用する必要があります。MyAdapterを呼び出す1つのクラスを作成し、BaseAdaterを拡張します。そのクラスで、必要なメソッドをオーバーライドします。クラスのgetViewメソッドで、xmlファイルを膨らませ、位置に従ってデータを配置します。

値がデータベースから取得されている場合は、カーソルを取得して繰り返し、必要な値を取得します。

お役に立てれば

于 2012-11-29T14:57:24.500 に答える