একটি কাস্টম ListAdapter অ্যানড্রইড ফিল্টার কিভাবে?

আমি অনেক অনুসন্ধান করেছি, কিন্তু কোনও সমাধান আমার জন্য কাজ করছে না আমি একটি কাস্টম অ্যারেডাপটার সেট করছি যা একটি ইমেজ ভিউ এবং একটি টেক্সটভিউ রয়েছে। আমি একটি edittext রাখা যেখানে আমি টেক্সট যোগ করতে চান এবং আমি এই দেওয়া গ্রন্থে দ্বারা তালিকা তালিকা পেতে চাই, যখন আমি একটি স্ট্রিং টাইপ অ্যারে অ্যাডাপ্টার ব্যবহার করে এই কাজ করে মহান, কিন্তু এটি আমার কাস্টম অ্যাডাপ্টারের মধ্যে কাজ না, এখানে আমার কোড:

public class CurrenciesFrom extends Activity implements OnItemClickListener {

    ListView lvCurrencies;
    String[] countryCode = { "BDT Bangladesh","BBF bafa" ,"USD America", "UMK Umaka","KRW Korea",
            "INR India" };
    int[] flag = { R.drawable.bdt, R.drawable.usd, R.drawable.aud,
            R.drawable.ic_launcher ,R.drawable.usd, R.drawable.aud};
    ArrayAdapter adapter;
    List l;
    EditText etsearch;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.currencies);
        initializer();
        lvCurrencies.setAdapter(adapter);
        lvCurrencies.setOnItemClickListener(this);
        etsearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
               //TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
               //TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
               //TODO Auto-generated method stub


                CurrenciesFrom.this.adapter.getFilter().filter(s.toString());
            }
        });
    }

    private List getModel() {
        List list = new ArrayList();
        for (int i = 0; i < countryCode.length; i++) {

            list.add(get(countryCode[i], flag[i]));
        }

        list.get(1).setSelected(true);//select one item by default
        return list;
    }

    private Currency get(String s, int place) {
        return new Currency(s, place);
    }

    private void initializer() {

        lvCurrencies = (ListView) findViewById(R.id.lvCurrencies);
        etsearch=(EditText)findViewById(R.id.etSearch);
        lvCurrencies.setTextFilterEnabled(true);
       //countryCode = getResources().getStringArray(R.array.Currencies);
        l = getModel();

        Collections.sort(l, new Comparator() {
            @Override
            public int compare(Currency c1, Currency c2) {
                return c1.getName().compareToIgnoreCase(c2.getName());
            }
        });

        adapter = new Customarrayadapter(this, l);
    }

আমার কাস্টম অ্যাডাপ্টার ক্লাস হল:

package com.powergroupbd.yahoo;

import java.util.List;

import android.app.Activity;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;

public class Customarrayadapter extends ArrayAdapter {

    private final List list;
    private final Activity context;

    public Customarrayadapter(Activity context, List list) {
        super(context, R.layout.showlist, list);
        this.context = context;
        this.list = list;
    }

    static class ViewHolder {
        protected TextView text;
        protected ImageView 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.showlist, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.text = (TextView) view.findViewById(R.id.label);
            viewHolder.text.setTextColor(Color.WHITE);
            viewHolder.sub = (ImageView) view.findViewById(R.id.sub);

            viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
            viewHolder.checkbox
                    .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView,
                                boolean isChecked) {
                            Currency element = (Currency) viewHolder.checkbox.getTag();
                            element.setSelected(buttonView.isChecked());
                            System.out.println("Checked : " + element.getName());
                        }
                    });
            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.setImageResource(list.get(position).getPlace());
        holder.checkbox.setChecked(list.get(position).isSelected());
        return view;
    }
}

আমাকে সাহায্য করুন :(

1
যোগ সম্পাদিত
মতামত: 1

2 উত্তর

এই কোড ব্যবহারকারী, পাঠ্য ফিল্টার জন্য

public void onTextChanged(CharSequence s, int start,
int before, int count)
{

    textlength = edittext.getText().length();
    text_sort.clear();
    image_sort.clear();

    for (int i = 0; i < text.length; i++)
    {
        if (textlength <= text[i].length())
        {
            if (edittext.getText().toString().
                    equalsIgnoreCase((String) text[i].subSequence(0, textlength)))
            {
                text_sort.add(text[i]);
                image_sort.add(image[i]);
            }
        }
    }

    listview.setAdapter(new MyCustomAdapter(text_sort, image_sort));

    }
}

for more, refer this site it may help you http://android-helper.blogspot.in/2011/07/android-search-in-custom-listview.html

1
যোগ
@ রেইজোন: টেক্সট_সোর্ট এবং ইমেজ_সোর্ট হল আরো তথ্য জানার জন্য ফিল্টারকৃত পাঠ্য এবং ছবি।
যোগ লেখক Aerrow, উৎস
এখানে text_sort, image_sort এবং পাঠ্য কী? দয়া করে ব্যাখ্যা করুন
যোগ লেখক Reyjohn, উৎস
আপনি thaseems লিঙ্ক করা সহায়ক হতে পারে, তার আমার দোষ যে আমি এটি আমার উপায়ে ব্যবহার করতে পারেন
যোগ লেখক Reyjohn, উৎস
আমার কাস্টমড্যাডর ক্লাস আরেকটি জাভা ফাইলে রয়েছে, তাই আমি কিছু ভেরিয়েবলের সাথে লিঙ্ক করতে পারি যা আপনি উভয় ক্লাসে পাঠ্য টেক্সট হিসাবে করেছেন, তাই আমি এটি ব্যবহার করতে পারছি না
যোগ লেখক Reyjohn, উৎস

গৃহীত উত্তর খুব বিভ্রান্তিকর এবং প্রকৃত সমস্যা উপেক্ষা করে। ওপেনটি সঠিকভাবে অ্যারেঅ্যাডপ্লেট উপকুলিং করছে। আপনি আপনার নিজস্ব তথ্য তালিকা ট্র্যাক এবং পরিবর্তে সঠিক অ্যাডাপ্টারের পদ্ধতি মাধ্যমে যে তথ্য অ্যাক্সেস উচিত। উদাহরণ, getItem (অবস্থান)অ্যারেঅ্যাডাপ্টার </কোড> কোনও বেঠিকতা দেখায় না যে আপনি তালিকা এর মধ্যে প্রবেশ করতে পারেন তবে এটি একই থাকে।

আসলে, একটি ফিল্টার অপারেশন চলাকালীন, এটি একটি নতুন অ্যারে এলিস্ট উদাহরণে ডাটা কপি করে। এর মানে হল যে আপনার উপবিভাগে ব্যবহৃত তালিকাটি অ্যারে অ্যাডাপ্টার এ একই তালিকার উল্লেখ করে না। যেহেতু আপনি getView() পদ্ধতিতে নিজের তালিকা অ্যাক্সেস করছেন; পরিবর্তিত getItem() থেকে, কোনও ফিল্টারিং পরিবর্তনগুলি মিস করা হবে। আসলে এই বিন্দু দ্বারা, আপনি অ্যাডাপ্টার থেকে যোগ অথবা অপসারণ করার ক্ষমতাও ভেঙ্গেছেন।

সর্বাধিক গুরুত্বপূর্ণ নিয়ম যখন অ্যারে অ্যাডাপ্টার কখনও তথ্য বাহ্যিক তালিকা রাখা না। সর্বদা অ্যারে অ্যাডাপ্টার এর পরিবর্তে দেখুন।

0
যোগ