如何在ArrayAdapter中传递两个值

时间:2017-05-16 15:33:52

标签: android

目前我正在通过过滤后的数组列表来设置自适应文本视图的适配器,因为我需要获取元素的位置?

以下是代码。  我已经迭代得到了标题,但是我需要在tabList.from中的URI,我需要将它传递给ArrayAdapter.So我该如何处理我的要求。

if (tabsList != null) {
            Iterator iterator = tabsList.iterator();
            while (iterator.hasNext()) {
                Tabs tabs = (Tabs) iterator.next();
                Iterator iterator1 = tabs.getCardInfo().iterator();
                while (iterator1.hasNext()) {

                    Cards card = (Cards) iterator1.next();
                    titleInCard.add(card.getTitle());

                }
            }
        }





  @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            charSequence = charSequence.toString().toUpperCase();
            final List<String> filteredList = new ArrayList<String>();
            for (int k = 0; k < titleInCard.size(); k++)
            {
                String titleData = titleInCard.get(k).toUpperCase();
                if (titleData.contains(charSequence)) {
                    filteredList.add(titleData);
                    Log.i("TAG", "onTextChanged: " + filteredList.size());
                    ArrayAdapter adapter = new ArrayAdapter(WebLoadActivity.this, android.R.layout.simple_list_item_1, filteredList);
                    mSearchEditTExt.setAdapter(adapter);
                    mSearchEditTExt.setThreshold(1);


                }
            }
        }

1 个答案:

答案 0 :(得分:0)

自定义ArrayAdapter是您所需要的。创建类并将其传递给两个值。

        public class SomeList {
            private String mFirstValue;
            private String mSecondValue;


            public SomeList(String firstvalue, String secondvalue) {
                mFirstValue = firstvalue;
                mSecondValue = secondvalue;
            }    

            public String getFirstValue() {
                return mFirstValue;
            }

            public String getSecondValue() {
                return mSecondValue;
            }
        }

创建类的对象的ArrayList并用对象填充

final ArrayList<Word> filteredList = new ArrayList<>();

    // fill it up with objects eg:
    earthquakes.add(new SomeList("George Washington", "April 30, 1789 – March 4"));

    SomeCustomAdapter adapter = new SomeCustomAdapter(this, filteredList);
    mSearchEditTExt.setAdapter(adapter);

最后创建自定义适配器

class SomeCustomAdapter extends ArrayAdapter<SomeList> {

    SomeCustomAdapter(Context context, ArrayList<SomeList> filteredList) {
        super(context, 0, filteredList);

    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        //initialize view
        View listItemView = convertView;
        if (listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.custom_list_item, parent, false);
        }
        //get current object from SomeList class
        SomeList currentSomeList = getItem(position);

        //Placeholder for first value
        TextView mFirstTextView = (TextView) listItemView.findViewById(R.id.text_view_one);
        mFirstTextView.setText(String.valueOf(currentSomeList.getFirstValue()));

        //Placeholder for second value
        TextView mSecondTextView = (TextView) listItemView.findViewById(R.id.text_view_two);
        mSecondTextView.setText(currentSomeList.getSecondValue());

        return listItemView;
    }
}

不要忘记使用两个textview创建custom_list_item。 E.g:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_width="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_view_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/text_view_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>