View Full Version : چطور میشه چک باکس های درون لیست ویو (custom شده)که رو انتخاب کرد؟
hamed_hossani
یک شنبه 04 خرداد 1393, 18:13 عصر
سلام
من تو activity یک لست ویو گذاشتم.
و از طریق یک adapter شخصی سازی شده که یک تکست ویو +چک باکس داره رو تو لیست صقحه اول ریختم.
adapter=new ShhAdapter(this, R.layout.record_sms, c, new String[] { "body", "address" },
new int[] { R.id.lblSmsBody, R.id.smsChkNumber });
حالا میخواستم که از بین ایتم های که نشون میده اون چک باکس هایی رو که تیک زده برام مشخص کنه.
اموزش هایی تو اینترنت دیدم ولی برام حسابی گنگ بودن.
http://fundoocode.net/android-listview-checkbox-example-onitemclicklistener-and-onclicklistener/
http://sunil-android.blogspot.com/2013/04/android-listview-checkbox-example.html
چطور میشه اون checkBox ها که انتخاب میشه رو مشخص کرد.
shahin bahari
دوشنبه 05 خرداد 1393, 00:26 صبح
یه متد توی آداپتور اضافه کنید که بهتون بگه کدوم گزینه ها چک خوردن!
یه آرایه (یا بهتره arrayList ( توی آداپتور داشته باشید و توی اون مشخص باشه کدوم گزینه ها چک خوردن. بعد توی اون متد همین آرایه رو برگردونید.
hamed_hossani
دوشنبه 05 خرداد 1393, 18:06 عصر
بعد توی اون متد همین آرایه رو برگردونید.
من اون کار که گفتید رو انجام دادم.
ولی نمی تونم خارج از کلاس اداپتور کاستوم شده متد که می سازم رو صدا بزنم!
1-متد استاتیک گذاشتم
2- پاپلیک گذاستم
3- پروپرتی پاپلیک گذاشتم
public static ArrayList<String> GetNumberSelected(){ return NumberSelectedList;
}
public static ArrayList<String> getNumberSelectedList() {
return NumberSelectedList;
}
public void setNumberSelectedList(ArrayList<String> numberSelectedList) {
NumberSelectedList = numberSelectedList;
}
نتونستم از بیرون کلاس یه ارایه دست پیدا کنم
bia2joker
دوشنبه 05 خرداد 1393, 18:53 عصر
داخل custom adapter یه ارایه تعریف می کنی مثل این
private class MyCustomAdapter extends ArrayAdapter<ModelSelectListSabt> {
private ArrayList<ModelSelectListSabt> stateList;
public MyCustomAdapter(Context context, int textViewResourceId,
ArrayList<ModelSelectListSabt> stateList)
{
super(context, textViewResourceId, stateList);
this.stateList = new ArrayList<ModelSelectListSabtDong>();
this.stateList.addAll(stateList);
}
من ارایه ای از کلاس ModelSelectListSabt رو تعریف کردم
بعد هر جا که خواستی با این کد به ارایه ی listview دسترسی داری
ArrayList<ModelSelectListSabt> stateList = dataAdapter.stateList;
که کلاس ModelSelectListSabt من این فیلد ها رو داره
private long ID;
private String Name;
private String ImageUrl;
private boolean selected;
private int value;
بعدش داخل getview هروقت checkbox کلیک شد مقدار selected برای همون position رو true کن
shahin bahari
دوشنبه 05 خرداد 1393, 20:09 عصر
من اون کار که گفتید رو انجام دادم.
ولی نمی تونم خارج از کلاس اداپتور کاستوم شده متد که می سازم رو صدا بزنم!
1-متد استاتیک گذاشتم
2- پاپلیک گذاستم
3- پروپرتی پاپلیک گذاشتم
نتونستم از بیرون کلاس یه ارایه دست پیدا کنم
چرا نمی تونید؟ چه اروری میده؟!
فقط متد پابلیک باشه کافی هست که به اون آرایه (حتی اگر private باشه) دسترسی داشت.
استاتیک و... جواب نمیده چون شما باید این متد رو از اون آداپتوری که به لیست نسبت دادید صدا بزنید.
بگید چی مینویسید و چه اروری میده تا بیشتر بشه راهنمایی کرد.
hamed_hossani
دوشنبه 05 خرداد 1393, 20:47 عصر
کد اداپتر نوشته شده
public class ShhAdapter extends SimpleCursorAdapter {
private Context context;
private Cursor cursor;
public ArrayList<String> NumberSelectedList;
public ShhAdapter(Context context, int layout, Cursor c, String[] from,
int[] to) {
super(context, layout, c, from, to);
this.cursor=c;
this.context=context;
setNumberSelectedList(new ArrayList<String>());
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view=super.getView(position, convertView, parent);
TextView TVsMSbODY=(TextView)view.findViewById(R.id.lblSmsB ody);
final CheckBox TVnO=(CheckBox)view.findViewById(R.id.smsChkNumber );
String _id=cursor.getString(cursor.getColumnIndex("_id"));
NumberSelectedList.add(_id);
if(itemChecked[position])
{
TVnO.setChecked(true);
}
else{
TVnO.setChecked(false);
}
TVnO.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if(TVnO.isChecked()){
itemChecked[position]=true;
String _id=cursor.getString(cursor.getColumnIndex("_id")); NumberSelectedList.add(_id);
}
else
{
itemChecked[position]=false;
}
}
});
return view;
}
public ArrayList<String> GetNumberSelected(){
return NumberSelectedList;
}
public ArrayList<String> getNumberSelectedList() {
return NumberSelectedList;
}
}
کدی که از اداپتور استفاده می کنه
adapter=new ShhAdapter(this, R.layout.record_sms, c, new String[] { "body", "address" }, new int[] { R.id.lblSmsBody, R.id.smsChkNumber });
adapter.getn
دسترسی به متد GetNumberSelected و یا خود NumberSelectedList را ندارم;
نمی تونم به این ارایه رشته ای دسترسی داشته باشم.
؟
با سپاس
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.