ورود

View Full Version : دسترسی به child دیگر لیست ویو در درون adapter



haniiii
پنج شنبه 29 اسفند 1392, 01:49 صبح
سلام

فرض کنید لیست ویو ای داریم با یه اداپتر کاستم ، هر childیک button داره و با onClickListener خودش

117173

وقتی روی این button ها کلیک میکنیم شکلشون تغییر میکنه و به اصطلاح فعال میشن ... اما تنها یکی از child ها میتونه button فعال داشته باشه و بقیه باید غیر فعال باشن

مثلا وقتی من به ترتیب بر روی button مربوط به child اول و دوم کلیک میکنم باید child دوم فقط فعال باقی بمونه

مشکل من همینجاست ... اگر بر روی button ای کلیک شد باید بگم بقیه button ها غیر فعال بشن ... اما چطوری بهشون دسترسی داشته باشم ؟ ... بدون notifyDataSetChanged(); چون دوباره لیست ویو رو میسازه و جالب نمیشه ....

haniiii
پنج شنبه 29 اسفند 1392, 12:47 عصر
any idea?

:(

smemamian
پنج شنبه 29 اسفند 1392, 17:16 عصر
سلام
با یه ترفند می تونی تشخیص بدی کدوم Button قبلاً انتخاب شده یا نه.
برای این کـــار یه آرایه ای از Booleanها درست کـــــن. ســــــایـــــز ایــــن
آرایه باید هم انـــــدازه تعداد سطرهایــــــــی باشه که در ListView دارید.
در ابتدا همه false باشه بعد از کلیک بررسی کنه که آیا true وجــــــــــود
داره یا نه اگه داره، false کن و مکان جدید button رو توی آرایه true کن.
بعد با همین آرایه شرط هایی که می خوای رو انجام بده. مثلاً :
ArrayList<Boolean> bool_arr = null ;
بعد:
در سازنده adapter این تابع رو فراخوانی کن :

bool_arr = new ArrayList<Boolean>();


initialSize(this.mylist.size());

private void initialSize(int size){
for(int i = 0 ; i < size ; ++i){
this.bool_arr.add(false);
}
}

بعد :

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

Integer index = (Integer) v.getTag();
int i = index.intValue();
Log.e("Position", String.valueOf(i));
for(int j = 0 ; j < bool_arr.size() ; ++j){
if(bool_arr.get(j)==true){
bool_arr.add(j, false);
}
}
bool_arr.add(i, true);
}

bia2joker
یک شنبه 03 فروردین 1393, 14:04 عصر
میشه کمی بیشتر توضیح دهید که این کدها را دقیقا کجا بنویسیم

من یک custom adapter دارم که داخلش یک button و textview هستش می خوام هر بار که روی دکمه یکی از ردیف های لیست ویو کلیک شد textview همون سطر مقدار Null شه و textview سطر های دیگه تغییر کنند.

مثلا من یه لیست ویو دارم که سه سطر داره مقدار Textview هر سطر عدد 1000 است . بعد که روی دکمه اون سطر کلیک کردم مقدار اون سطر صفر شه و اون دو سطر باقی مانده مقدارشون بشه 1500
امیدوارم که منظورمو رسونده باشم.

haniiii
سه شنبه 05 فروردین 1393, 18:44 عصر
سلام
با یه ترفند می تونی تشخیص بدی کدوم Button قبلاً انتخاب شده یا نه.
برای این کـــار یه آرایه ای از Booleanها درست کـــــن. ســــــایـــــز ایــــن
آرایه باید هم انـــــدازه تعداد سطرهایــــــــی باشه که در ListView دارید.
در ابتدا همه false باشه بعد از کلیک بررسی کنه که آیا true وجــــــــــود
داره یا نه اگه داره، false کن و مکان جدید button رو توی آرایه true کن.
بعد با همین آرایه شرط هایی که می خوای رو انجام بده. مثلاً :
ArrayList<Boolean> bool_arr = null ;
بعد:
در سازنده adapter این تابع رو فراخوانی کن :

bool_arr = new ArrayList<Boolean>();


initialSize(this.mylist.size());

private void initialSize(int size){
for(int i = 0 ; i < size ; ++i){
this.bool_arr.add(false);
}
}

بعد :

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

Integer index = (Integer) v.getTag();
int i = index.intValue();
Log.e("Position", String.valueOf(i));
for(int j = 0 ; j < bool_arr.size() ; ++j){
if(bool_arr.get(j)==true){
bool_arr.add(j, false);
}
}
bool_arr.add(i, true);
}

دوست عزیز مشکل من این قسمت نیست ...