目前我正在通过过滤后的数组列表来设置自适应文本视图的适配器,因为我需要获取元素的位置?
以下是代码。 我已经迭代得到了标题,但是我需要在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);
}
}
}
答案 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>