相关疑难解决方法(0)

过滤后,Android Custom ArrayAdapter不会刷新

所以我有一个自定义,ArrayAdapter所以我可以使用可用的标题/副标题视图ListView.我有一个EditText接受字符串并过滤适配器.

过滤器工作的意义在于它正在过滤正确的对象(我可以通过点击它来判断它并使用正确的"额外"来启动意图.)

但是,即使过滤工作,适配器中的项目也不会更新以显示正确的信息...标题和副标题不正确.

让我们说我们有0到9的项目ListView,我过滤到3项搜索,并说让过滤的项目显示5,6,9 ... 3项,但它的前3项目的原- 搜索ListView(0-2).如果我单击项目2(第三项),则9的内容包含在新意图中.这对于搜索条件是正确的,但标题确实反映了正确的信息.

我不确定我需要告诉ListView刷新什么.我不认为它notifyDataSetChanged();

任何帮助表示赞赏.谢谢!

    public class myListAdapter extends ArrayAdapter<Pizza>{
    private ArrayList<Pizza> items;
    private PizzaViewHolder myListHolder;

    private class PizzaViewHolder{
        TextView title;
        TextView subtitle;
    }

    public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
        super(context, textViewResourceId, items);
        this.items = items;
        // TODO Auto-generated constructor stub
    }

    @Override
    public View getView(int pos, View convertView, ViewGroup parent){
        View v = convertView;
        if(v == null){
            LayoutInflater vi = …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

5
推荐指数
1
解决办法
5686
查看次数

绕过不更新ListView Android的过滤中的错误

这是代码,我使用了自定义适配器,并应用了Filter方法,现在当输入退格键时,ListView不会更新,当从项目活动切换回来时.我读到它是过滤器中的一个错误,但是如何绕过它,我知道已经实现了我想要的这种设置的应用程序.

public class IndexPageActivity extends Activity implements OnItemClickListener{ 
    ListView listView;
    EditText editTextB;
    PagesAdapter adapter1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.pageList);
        editTextB = (EditText) findViewById(R.id.searchB);
        adapter1 = new PagesAdapter(this);
        listView.setAdapter(adapter1);
        adapter1.notifyDataSetChanged();
        listView.setOnItemClickListener(this);

        editTextB.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                IndexPageActivity.this.adapter1.getFilter().filter(cs.toString());
                adapter1.notifyDataSetChanged();
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                        int arg2, int arg3) { }

            @Override
            public void afterTextChanged(Editable arg0) { }
        });
    }

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

android listview android-listview android-filterable

5
推荐指数
1
解决办法
1679
查看次数