繁体   English   中英

android:如何将行(视图)添加到现有的自定义listview适配器?

[英]android : how to add rows(View) into existing custom listview adapter?

我需要更改自定义listview适配器,因为我在适配器中列出了分页概念的值。 当用户单击“加载更多”按钮时,列表将向列表视图中添加10行,并将显示,但列表视图是默认的,显示的是第一行,但列表视图的焦点不应与上次查看的行改变?

PropertyListAdapter searchAdapter = new PropertyListAdapter(getApplicationContext(), searchResult, pagination);
searchListView.setAdapter(searchAdapter);
searchListView.smoothScrollToPosition((pageId-1)*10);

为了添加自定义行视图,您可以使用baseadapter类通过行布局添加它们并将其设置为listview的适配器

private class ViewHolder{
    public Button b;
}
Override getView and create something like this:

@Override
public View getView(final int position, View convertView, ViewGroup parent){
        ViewHandler vh;
        if (convertView == null){
            convertView = View.inflate(getContext(), R.layout.your_layout, null);
            vh = new ViewHolder();
            vh.b = (Button) convertView.findViewById(R.id.button1);
            convertView.setTag(vh);
        } else {
            vh = (ViewHolder) convertView.getTag();
        }
        vh.b.setText(String.valueOf(getItem(i).intValue()));
        vh.b.setOnClickListener(new OnClickListener(){

            public void onClick(View v){
                if (listener != null){
                    listener.onListButonItemClicked(getItem(position).intValue());
                }
            }

        });
        return convertView;
    }
 my_array.addAll(other_array);

将元素从新数组添加到数组。 然后,您可以执行以下操作:

 if(mylistAdapter ==null){
    mylistAdapter = new PropertyListAdapter(getApplicationContext(),myPropertyList);
    searchListView.setAdapter(mylistAdapter);
}else{
    mylistAdapter.notifyDataSetChanged();
}

用新元素更新ListView。

您可以将适配器类型从BaseAdapter更改为ArrayAdapter。 ArrayAdapter具有add()和addAll()函数,可以根据需要将行动态添加到列表视图中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM