我在自定义arrayAdapter中实现自定义getFilter时遇到问题.实际上我不知道如何实现它.试过各种代码,但仍然没有运气.这是我的自定义数组适配器.
package com.test.FilterableList.Adapters;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.test.FilterableList.Models.ListTO;
import com.test.FilterableList.R;
import android.widget.Filterable;
public class FilterableAdapter extends ArrayAdapter<ListTO> implements Filterable {
// declaring our ArrayList of items
public ArrayList<ListTO> objects;
/* here we must override the constructor for ArrayAdapter
* the only variable we care about now is ArrayList<Item> objects,
* because it is the list of objects we want to display.
*/
public FilterableAdapter(Context context, int textViewResourceId, ArrayList<ListTO> objects) …Run Code Online (Sandbox Code Playgroud) 我有一个ListView(带有setTextFilterEnabled(true))和一个自定义适配器(扩展ArrayAdapter),每当添加/插入新项目时,我都会从主UI线程更新.一切都工作正常 - 新项目立即显示在列表中.但是,当我尝试过滤列表时,这就停止了.
过滤工作,但我做了一次,我所有成功修改列表内容(添加,删除)的尝试都不再显示.我使用Log来查看适配器的列表数据是否得到了正确的更新,但确实如此,但它不再与显示的ListView同步.
是什么导致了这个以及如何最好地解决这个问题?
我使用adapter = new SimpleCursorAdapter(这个,android.R.layout.simple_list_item_multiple_choice,cur,cols,views)来创建一个多选控件,但我不满足于多选控件中textview的样式,所以我必须使用以下代码来创建多选控件的新布局.它运作良好,但我认为这不是一个好方法,有没有好的代码?谢谢!
adapter = new SimpleCursorAdapter(this,R.layout.mysimple_list_item_multiple_choice,cur,cols,views);
lv.setAdapter(adapter);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
Run Code Online (Sandbox Code Playgroud)
mysimple_list_item_multiple_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:ellipsize="end"
android:singleLine="true"
/>
Run Code Online (Sandbox Code Playgroud) 嘿伙计们我想在一个内置到片段中的listview中实现搜索功能listview工作正常但是当我在edittext上键入搜索时它会消失
我的代码:
public class DrinksFragment extends Fragment {
private View rootView;
private ArrayAdapter<DrinksList> adapter;
private List<DrinksList> drinks;
private ListView lv;
ArrayList<DrinksList> mAllData;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.activity_drinks_fragment, container, false);
populateDrinksList();
doSearch();
return rootView;
}
private void doSearch() {
final EditText et = (EditText)rootView.findViewById(R.id.searchListDrinks);
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) …Run Code Online (Sandbox Code Playgroud) 我想实现getFilter()我的功能ListView,但每次我输入的东西EditText我ListView就会消失.
我的SetHelpRows档案:
public class SetHelpRows {
String name;
String id;
public String getName () {
return name;
}
public void setName (String name) {
this.name = name;
}
public String getID () {
return id;
}
public void setID (String id) {
this.id = id;
}
public SetHelpRows(String name, String id) {
super();
this.name = name;
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
我的SetHelpRowsCustomAdapter档案:
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context; …Run Code Online (Sandbox Code Playgroud)