2012-04-05 29 views
0

私はリストボックスにチェックボックスと "保存"ボタンがあります。私はここにデータベース にそれらのチェックを行に関連するデータを保存したいどのチェックボックス私はチェックして、保存ボタンをクリックし、
は私のコードはAdaptarクラスIでAndroid - リストビューでチェックボックスの状態を保存

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; 
}} 

ですステータスを取得することができます。しかし、どのように私はそれらの状態を保存し、すべての状態を取得する必要がありますので、ボタンをクリックすると、それらのチェックされた行に関連するすべてのデータを保存する...?

+0

で、次の

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 } } 

を追加します。//automateddeveloper.blogspot .in/2010/09/everything-you-need-to-know-about.html – Bhavin

答えて

3

こんにちはGetCardDetails()方法でアダプタにsr1.setSelected(true)またはsr1.setSelected(false)

を追加します。httpこのサイトを試してみてください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); 
      } 
     } 
    }); 
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; 
} 
関連する問題