[英]Android- Save checkbox state in listview
i have listview with checkboxes and "save" button.我有带有复选框和“保存”按钮的列表视图。
Whichever checkboxes i check and click save button, i want to save the data related to those checked rows into database here is my code无论我选中哪个复选框并单击保存按钮,我都想将与那些选中的行相关的数据保存到数据库中,这是我的代码
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;
}}
and activity class和活动 class
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;
}}
in Adaptar class i am able to get the status.在 Adaptar class 中,我可以获得状态。 but how do i save those status and get all the status in activity class so that on click of save button i save all the data related to those checked rows...?但是我如何保存这些状态并获取活动 class 中的所有状态,以便在单击保存按钮时保存与那些选中的行相关的所有数据...?
Hi in the GetCardDetails()
method add sr1.setSelected(true)
or sr1.setSelected(false)
您好,在GetCardDetails()
方法中添加sr1.setSelected(true)
或sr1.setSelected(false)
in adapter add the following在适配器中添加以下内容
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
}
}
in getview在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);
}
}
});
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.