0

チェックボックスと「保存」ボタンのあるリストビューがあります。
チェックして保存ボタンをクリックしたチェックボックスのどれでも、チェックした行に関連するデータをデータベースに保存したいのですが、これが私のコードです

public class CardDetailsAdapter extends BaseAdapter {    
private static ArrayList<CardDetails> searchArrayList;          
private LayoutInflater mInflater;       

 private boolean[] itemChecked =  new boolean[100];

public CardDetailsAdapter(Context context, ArrayList<CardDetails> results) {
     map = new HashMap<Integer, Boolean>();
    searchArrayList = results;
    mInflater = LayoutInflater.from(context);
}

public int getCount() {
    return searchArrayList.size();
}

public Object getItem(int position) {
    return searchArrayList.get(position);
}

public long getItemId(int position) {
    return position;
}

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

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.welcomelistview, null);
        holder = new ViewHolder();
        holder.bankName = (TextView) convertView.findViewById(R.id.BankNameID);
        holder.messages = (TextView) convertView.findViewById(R.id.messageID);
        holder.chkbox = (CheckBox) convertView.findViewById(R.id.chkBoxID);
        System.out.println("is checked==> " + holder.chkbox.isChecked());

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }        
    holder.bankName.setText(searchArrayList.get(position).getBankName());
    holder.messages.setText(searchArrayList.get(position).getMessages());       
    holder.chkbox.setChecked(false);
    // save position and checking status into tag
    holder.chkbox.setTag(position);
    holder.chkbox.setOnClickListener(new OnClickListener() {            
        public void onClick(View v) {
             HashMap<Integer, Boolean> mSimpleAdapter = new HashMap<Integer, Boolean>();
             int p = (Integer) (v.getTag());
                if (holder.chkbox.isChecked() == true) {
                    itemChecked[Integer.valueOf(position)] = holder.chkbox.isChecked();  
                }else{
                    itemChecked[Integer.valueOf(position)] = holder.chkbox.isChecked();  
                 }

             mSimpleAdapter.put(p, itemChecked[position]);
             holder.chkbox.setChecked(itemChecked[position]); 
        }
    });
    return convertView;
}

static class ViewHolder {
    TextView bankName;
    TextView messages;
    CheckBox chkbox;
}}

とアクティビティクラス

import com.ispl.CFSMS.helper.CardDetailsAdapter;
    public class WelcomePage extends Activity{
     CardDetailsAdapter mListAdapter;
    ArrayList<Integer> arList = new ArrayList<Integer>();
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcomepage); 
        final ArrayList<CardDetails> cardResults = GetCardDetails();
        final ListView welcomelist = (ListView) findViewById(R.id.welcomelistID);        
        welcomelist.setAdapter(new CardDetailsAdapter(this, cardResults));                      
        welcomelist.setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) {
                Object o = welcomelist.getItemAtPosition(position);
                CardDetails fullObject = (CardDetails)o;
                Intent r=new Intent(WelcomePage.this , CardMenuActivity.class);
                r.putExtra("BankName", fullObject.getBankName());
                r.putExtra("CardNumber", fullObject.getCardNumber());
                startActivityForResult(r, position);
                return false;
            }
        });

        CheckBox checkbox = (CheckBox)findViewById(R.id.chkBoxID);
        Button saveTODbBtn = (Button)findViewById(R.id.saveID);
        saveTODbBtn.setOnClickListener(new OnClickListener() {              
            public void onClick(View v) {               
                //get the checkbox status and save related details into database
                Intent intent=new Intent(WelcomePage.this, BankProjectActivity.class);
                startActivity(intent);
            }
        });

    }    
 private ArrayList<CardDetails> GetCardDetails(){
        ArrayList<CardDetails> carddetailresults = new ArrayList<CardDetails>();        
         CardDetails sr1 = new CardDetails();

         sr1.setBankName("Select All");
         sr1.setCardNumber("");
         sr1.setMessages("");
         carddetailresults.add(sr1);

         sr1 = new CardDetails();    
         sr1.setBankName("HDFC Bank" +" "+ "xxxxx1234");
         sr1.setMessages("Messages: " + "10");
         carddetailresults.add(sr1);

         sr1 = new CardDetails();
         sr1.setBankName("ICICI" + " "+ "xxxxx2134");
         sr1.setMessages("Messages: 5");
         carddetailresults.add(sr1);

         sr1 = new CardDetails();
         sr1.setBankName("HSBC" + " "+ "xxxxx8796");
         sr1.setMessages("Messages: 2");
         carddetailresults.add(sr1);

         return carddetailresults;
 }} 

Adaptarクラスでは、ステータスを取得できます。しかし、これらのステータスを保存し、アクティビティクラスのすべてのステータスを取得して、[保存]ボタンをクリックすると、チェックされた行に関連するすべてのデータを保存するにはどうすればよいですか...?

4

2 に答える 2

3

こんにちはGetCardDetails()メソッドaddsr1.setSelected(true)またはsr1.setSelected(false)

アダプタに以下を追加します

  public static ArrayList<Boolean> itemChecked1 = null;  
  public CardDetailsAdapter( Context context, ArrayList<CardDetails> results) {
    super( context, R.layout.welcomelistview, R.id.BankNameID, results );
    searchArrayList = results;
    getContext = context;
    mInflater = LayoutInflater.from(context) ;
    itemChecked1 = new ArrayList<Boolean>();
    for (int i = 0; i < results.size(); i++) {
        itemChecked1.add(i, results.get(i).isSelected()); // initializes all items value with false         
    }
}

getviewで

holder.chkbox.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            CheckBox cb = (CheckBox) v;
            CardDetails planet = (CardDetails) cb.getTag();
            //planet.setSelected(cb.isChecked());
            if (holder.chkbox.isChecked()) {
                itemChecked1.set(position, true);
                holder.chkbox.setChecked(true);
                planet.setSelected(true);
            } else if (!holder.chkbox.isChecked()) {
                itemChecked1.set(position, false);
                holder.chkbox.setChecked(false);
                planet.setSelected(false);
            }
        }
    });
于 2012-04-27T10:23:10.037 に答える
0
public View getView(final int position, View convertView,ViewGroup paramViewGroup)
{
    final ViewHolder holder;
    LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
    if (convertView == null) 
    {
        convertView=inflater.inflate(R.layout.addressbook, null);holder = new ViewHolder();
        holder.adddress_name=(TextView)convertView.findViewById(R.id.addressbook_name);
        holder.adddress_number=(TextView)convertView.findViewById(R.id.address_number);
        holder.adddress_name.setText(adddressbook_name.get(position).toString().trim())
        holder.adddress_number.setText(addressbook_number.get(position).toString().trim());
        holder.addressbook_check=(CheckBox)convertView.findViewById(R.id.address_check);convertView.setTag(holder); 
    }
    else
    {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.addressbook_check.setId(position);

    holder.addressbook_check.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v) 
            {
                CheckBox cb = (CheckBox) v;
                int id = cb.getId();
                if (thumbnailsselection[id])
                {
                    cb.setChecked(false);
                    thumbnailsselection[id] = false;
                }
                else
                {
                    cb.setChecked(true);
                    thumbnailsselection[id] = true;
                }
            }
        });

    holder.addressbook_check.setChecked(thumbnailsselection[position]);
    return convertView;
}

class ViewHolder
{  
    TextView adddress_name;
    TextView adddress_number;
    CheckBox addressbook_check;
}
于 2012-04-05T07:51:09.363 に答える