重複の可能性:
Android は、カーソル アダプターを使用して ListView にチェックボックスの状態を保存します。
各項目にListView
はいくつかtext(name,id)
の項目とチェックボックスが含まれています。ページから戻るボタンがありListView
ます。そのため、ユーザーはいくつかの項目をチェックして、前のページに戻ります。このページには、ページに戻るためのボタンもありListView
ます。彼/彼女が戻ってきたら、私は彼/彼女が以前に選択したアイテムを彼/彼女に見せたい.
については知ってSharedPreferences
いますが、ユーザーがアプリケーションを再起動したときにその状態を保存したくないので、使用したくありません。アプリケーションの実行時にのみ必要です。私はそれにいくつかの仕事をし、彼が選択したデータを保存し、彼が戻ってきたときにそれを確認します. しかし、チェックボックスにチェックを入れることができません。私がここで何をしているのか誰かが言ってくれることを願っています。プログラムではなく、xmlのチェックボックスを使用します。
public class MyCustomArrayAdapter extends ArrayAdapter<Model> {
private final List<Model> list;
private final Activity context;
public static ArrayList<String> friendName=new ArrayList<String>();
public static ArrayList<String> friendBirthdate=new ArrayList<String>();
public static ArrayList<String> friendId=new ArrayList<String>();
public static ArrayList<String> getSelectedFriendId;
public MyCustomArrayAdapter(Activity context, List<Model> list)
{
super(context, R.layout.list_layout, list);
this.context = context;
this.list = list ;
}
public static int count=0;
static class ViewHolder
{
protected TextView text, sub;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = null;
if (convertView ==null)
{
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.list_layout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView)view.findViewById(R.id.label);
viewHolder.text.setTextColor(Color.WHITE);
viewHolder.sub = (TextView)view.findViewById(R.id.sub);
viewHolder.sub.setTextColor(Color.GRAY);
viewHolder.checkbox = (CheckBox)view.findViewById(R.id.check);
if(SelectionPage.get_selectedFriendId()!=null) //checking whether user checked something earlier
{
getSelectedFriendId=SelectionPage.get_selectedFriendId(); //get checked userid from when user selects something
for( int x = 0 ; x < getSelectedFriendId.size() ; x++ )
{
for(int a=0;a<list.size();a++)
{
if(list.get(a).getId().contains(getSelectedFriendId.get(x)))
{
Toast.makeText( context, "matched..", Toast.LENGTH_SHORT).show();
viewHolder.checkbox.setChecked(true); //this doesn't check checkbox which is the problem!
}
}
}
}
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
{
Model element = (Model)viewHolder.checkbox.getTag();
if(buttonView.isChecked())
{
count++;
friendName.add(element.getName().toString());
friendBirthdate.add(element.getPlace().toString());
friendId.add(element.getId().toString());
}
else
{
friendName.remove(element.getName().toString());
friendBirthdate.remove(element.getPlace().toString());
friendId.remove(element.getId().toString());
count--;
}
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
}
else
{
view = convertView;
((ViewHolder)view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getName());
holder.sub.setText( list.get(position).getPlace());
return view;
}
}