مشکل : نمایش تصادفی متن در لیست ویو (در صورت اضافه شدن یک شرط)
به نام خدا
*** این مسئله شکر خدا حل شد ... ، کمی توضیحات راجع به مشکل و نحوه حل آن را در پایین عرض می کنم تا اگر کسی با این مشکل مواجه شد ، ان شا الله بتواند حل کند .
--- مشکل : گذاشتن یک شرط در getView برای اینکه برای یک سری آیتم خاص یک سری پارامتر خاص مثل رنگ پس زمینه متفاوت ست شود . ولی متاسفانه دیده شد که در زمان اسکرول کردن این پارامتر های ست شده یا حذف شده یا بصورت رندوم نمایش داده می شوند (مانند تغییر رنگ آیتم جستجو شده در لیست) !!!
--- حل : برای هر شرطی که برای هر پارامتر خاص شما قرار می دهید و در آن رنگ پس زمینه ست می شود باید درست قبل از آن یک مقدار اولیه از همان نوع ست شود . مانند زیر :
holder.tv3.getLayoutParams().height = LayoutParams.WRAP_CONTENT; // مقدار اولیه
if (model.getsafhe() == 0 ) { holder.tv3.getLayoutParams().height = 0; } // پارامتر دلخواه شما
// دوستان توجه کنند که شما می توانید هر پارامتر دیگری ست کنید مثل رنگ ولی حتما باید مقدار اولیه برای ان ست کرده باشید...
امیدوارم که مفید واقع شود ...
---------------------------------------------------------------------------------------------
سلام ، بنده از یک array adapter و یک مدل برای گرفتن و ست کردن داده استفاده کرده ام .
یکی از ارایه هایی که به مدل ست می شوند مقادیر زیادی عدد صفر دارد .
آرایه صفحه و جز و حزب مانند زیر مقدار دهی شده اند :
safhe={0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0, ....}
بنده قصد این را دارم که در لیست موجود مقادیر غیر صفر این آرایه خاص به یک تکست ویو ، ست شوند و مقادیر صفر نمایش داده نشوند.
برای این کار از کد زیر استفاده کرده ام ولی متاسفانه در لیست موجود برای آیتم های با مقادیر صفر به صورت کاملا رندوم از مقادیر غیر صفر به تکست ویو ها ست می شوند .. به نظر شما مشکل از کجاست ؟
کد:
مدل:
public class Model {
...
int safhe=0;
int joz =0;
int hezb =0;
public Model(... int safhe, int joz, int hezb) {
super();
...
this.safhe = safhe;
this.joz = joz;
this.hezb = hezb;
}
....
//-----7 Get & Set : Safhe -----
public int getsafhe() {
return safhe;
}
public void setfaT(int safhe) {
this.safhe = safhe;
}
//-----8 Get & Set : Joz -----
public int getjoz() {
return joz;
}
public void setjoz(int joz) {
this.joz = joz;
}
//-----9 Get & Set : Hezb -----
public int gethezb() {
return hezb;
}
public void sethezb(int hezb) {
this.hezb = hezb;
}
}
اداپتر:
public class ContentAdapter extends ArrayAdapter<Model> {
private ArrayList<Model> modelList;
private Model model;
...
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//----- Set Object's ------------------------------------------
final ViewHolder holder;
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.row, parent, false);
holder = new ViewHolder();
holder.tva = (TextView) convertView.findViewById(R.id.tvAr);
holder.tvf = (TextView) convertView.findViewById(R.id.tvFa);
holder.tv0 = (TextView) convertView.findViewById(R.id.tv0);
holder.tv1 = (TextView) convertView.findViewById(R.id.tv1);
holder.tv2 = (TextView) convertView.findViewById(R.id.tv2);
holder.iv1 = (ImageView) convertView.findViewById(R.id.iv1);
holder.iv2 = (ImageView) convertView.findViewById(R.id.iv2);
holder.tv3 = (TextView) convertView.findViewById(R.id.tv3);
holder.tv4 = (TextView) convertView.findViewById(R.id.tv4);
holder.tv5 = (TextView) convertView.findViewById(R.id.tv5);
holder.ll = (LinearLayout)convertView.findViewById(R.id.linearLayout2);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
model = modelList.get(position);
//-----1 Setting Text Type Faces ------------------------
holder.tva .setTypeface(aft);
holder.tvf .setTypeface(pft);
holder.tv1 .setTypeface(tf);
holder.tv2 .setTypeface(tf);
//----- Setting Safhe , Joz , Hezb -----------
if (model.getsafhe()!=0) { holder.tv3.setText("صفحه"+""+model.getsafhe()); Log.d("safhe:",model.getsafhe()+"");}
if (model.getjoz()!=0) { holder.tv4.setText("جزء"+""+model.getjoz()); Log.d("joz: ", model.getjoz()+"");}
if (model.gethezb()!=0) { holder.tv5.setText("حزب"+""+model.gethezb()); Log.d("hezb: ", model.gethezb()+"");}
return convertView;
}
توضیحات خواسته شده ، اضافه گردید . دوستان باز اگر قسمتی از سوال مشکلی داشت ، بفرمایند تا تصحیح شود .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .