آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در جستجو در listView

shiva  11 سال پیش  11 سال پیش
+1 0

سلام

مشکل من اینه که وقتی کلمه ای رو در EditBox جستجو میکنم با رسیدن به خط carsListData.clear(); هم carsListData خالی میشه هم arraylist و بنابراین لیست من خالی میشه و هیچ متنی داخلش باقی نمی مونه تا جستجو انجام بشه.

برای رفع این مشکل باید چه کنم؟

 

 public class CustomAdapter2 extends BaseAdapter {

	private Context     mContext;
    private ArrayList<HashMap<String, Object>> carsListData = null;
    private ArrayList<HashMap<String, Object>> arraylist;

    public CustomAdapter2(ProductActivity productActivity, ArrayList<HashMap<String, Object>> Data) {
    	carsListData = Data;
    	
    	this.arraylist = new ArrayList<HashMap<String, Object>>();
    	this.arraylist.addAll(carsListData);
    	
    	arraylist = Data;
    	mContext = productActivity;
    }
 
    public int getCount() {
        return carsListData.size();
    }
 
    public Object getItem(int position) {
        return position;
    }
 
    public long getItemId(int position) {
        return position;
    }
 
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if(convertView==null)
            vi = inflater.inflate(R.layout.activity_product_listview, null);
 
        TextView title = (TextView)vi.findViewById(R.id.title);
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.img); 
        TextView price = (TextView)vi.findViewById(R.id.price);
        TextView state = (TextView)vi.findViewById(R.id.state);
 
        HashMap<String, Object> song = carsListData.get(position);
        
        title.setText(song.get("produtTitle").toString());
        thumb_image.setImageBitmap((Bitmap) song.get("produtImage"));
        price.setText(song.get("produtPrice").toString());
        state.setText(song.get("produtState").toString());
         
        return vi;
    }
    
    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        //arraylist = carsListData;
        carsListData.clear();
        //carsListData.clear();
        if (charText.length() == 0) {
        	carsListData.addAll(arraylist);
        } 
        else
        {
            for (int i=0 ; i<carsListData.size() ; i++) 
            {
            	HashMap<String, Object> l = carsListData.get(i);
            	
                if (((String) l.get("produtTitle")).toLowerCase(Locale.getDefault()).contains(charText)) 
                	arraylist.add(carsListData.get(i));
            }
            carsListData = arraylist;
        }
        notifyDataSetChanged();
    }
}

 

0 0
کد رو کامل نخوندم ولی arraylist = Data; رو همون اوایا حذف کن. وقتی هر دو یه مکان حافظه دارن طبیعیه رفتار مشابه داشته باشن (11 سال پیش)
0 0
درسته حق با شماست. با حذف گردن arraylist = Data; و اضافه کردن خط زیر مشکلم حل شد. (11 سال پیش)
0 0
public CustomAdapter2(ProductActivity productActivity, ArrayList Data) { carsListData = Data; this.arraylist = new ArrayList(); if(carsListData.size() != 0) this.arraylist.addAll(carsListData); mC } (11 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .