栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android应用程序中的动态ListView

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android应用程序中的动态ListView

要将新项动态添加到列表中,您必须从ListActivity获取适配器类,并且只需添加新元素即可。将项目直接添加到适配器时,会自动为您调用notifyDataSetChanged-
并且视图会自动更新。

您还可以提供自己的适配器(扩展ArrayAdapter),并使用List参数覆盖构造函数。您可以像使用适配器一样使用此列表,但是在这种情况下,您必须自己调用adapter.notifyDataSetChanged()-刷新视图。
请看下面的例子:

public class CustomList extends ListActivity {private LayoutInflater mInflater;private Vector<RowData> data;@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main); mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);    data = new Vector<RowData>();    RowData rd = new RowData("item1", "description1");    data.add(rd);    rd = new RowData("item2", "description2");    data.add(rd);    rd = new RowData("item2", "description3");    data.add(rd);    CustomAdapter adapter = new CustomAdapter(this, R.layout.custom_row,R.id.item, data);    setListAdapter(adapter); getListView().setTextFilterEnabled(true);}public void onListItemClick(ListView parent, View v, int position, long id) {    CustomAdapter adapter = (CustomAdapter) parent.getAdapter();    RowData row = adapter.getItem(position); alertDialog.Builder builder = new alertDialog.Builder(this);    builder.setTitle(row.mItem);     builder.setMessage(row.mDescription + " -> " + position );    builder.setPositiveButton("ok", null);    builder.show();}private class RowData {    protected String mItem;    protected String mDescription;    RowData(String item, String description){        mItem = item;        mDescription = description;  }    @Override    public String toString() {        return mItem + " " +  mDescription;    }}private class CustomAdapter extends ArrayAdapter<RowData> {    public CustomAdapter(Context context, int resource, int textViewResourceId, List<RowData> objects) {        super(context, resource, textViewResourceId, objects);    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder = null;        //widgets displayed by each item in your list        TextView item = null;        TextView description = null;        //data from your adapter        RowData rowData= getItem(position);        //we want to reuse already constructed row views...        if(null == convertView){ convertView = mInflater.inflate(R.layout.custom_row, null); holder = new ViewHolder(convertView); convertView.setTag(holder);        }        //         holder = (ViewHolder) convertView.getTag();        item = holder.getItem();        item.setText(rowData.mItem);        description = holder.getDescription();   description.setText(rowData.mDescription);        return convertView;    }}private class ViewHolder {          private View mRow;    private TextView description = null;    private TextView item = null;    public ViewHolder(View row) {        mRow = row;    }    public TextView getDescription() {        if(null == description){ description = (TextView) mRow.findViewById(R.id.description);        }        return description;    }    public TextView getItem() {        if(null == item){ item = (TextView) mRow.findViewById(R.id.item);        }        return item;    }       }

}

您可以扩展上面的示例并添加“更多”按钮-只需将新项目添加到适配器(或矢量)即可。
问候!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号