Articles of android arrayadapter

v.getTag()返回null而不是ViewHolder

我有一个定制的适配器,具有标头和自定义行。 有时候我的v.getTag()会在我存储ViewHolder的地方返回null。 它不会一直发生,我无法弄清楚它何时以及为什么会诅咒。 @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; //Header if(items.hasDescription() && 0 == position) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.app_list_header, null); ((TextView) v.findViewById(R.id.app_list_header_description_text)).setText(items.getDescription()); return v; } ViewHolder holder; // Inflate app view. if (v == null || v.getTag() == null) { LayoutInflater vi […]

ArrayAdapter的getView()方法的说明

你能解释一下ArrayAdapter的getView()方法吗? 我阅读了文档,它有三个参数: position :项目在我们想要的视图的项目的适配器数据集中的位置。 convertView :如果可能的话,重用旧视图。 注意:在使用之前,您应该检查此视图是否为非null且具有适当的types。 如果无法转换此视图以显示正确的数据,则此方法可以创建新视图。 异构列表可以指定其视图types的数量,以便此View始终是正确的types(请参阅getViewTypeCount()和getItemViewType(int))。 parent :此视图最终将附加到的父级 我理解position参数。 就像他们说的那样,这意味着该项目的位置,已经请求了视图。 convertView来自哪里。 我见过很多例子,他们检查convertView是否为null。 如果is为null,则会为行布局的新实例充气,填充并返回它。 我想我也已经知道了这一点,但还有一件事让我感到困惑。 通过convertViewparameter passing的布局是什么。 是否在初始化ArrayAdapter时传入的resource参数 ? 是getView()返回的最后一个布局的缓存副本? 最后。 parent参数的作用是什么。 我没有看到太多利用它的例子。 他们中的大多数只是重复/膨胀行布局并返回它。 (我问,因为我的ListView有一个点击animation。特别是这个旨在复制Spotify的下拉快速操作菜单 。我的animation有点迟钝。在诊断了这个问题一段时间之后,我意识到这是因为我的getView()方法需要花费一些时间才能完成,因为我在每次迭代中都在为一个新的行布局进行膨胀。有人建议在ViewHolder缓存行布局,而其他示例则指向重用convertView参数,即如果convertView为null,则仅对行布局进行膨胀。)

onItemClickListener未在自定义ArrayAdapter上触发

我有一个Activity ,它从Web服务中检索数据。 这个数据通过ArrayAdapter在ListView显示,它通过内部三个TextViews对RelativeLayout进行膨胀,没什么特别的,它可以正常工作。 现在我想实现一个Details Activity ,当用户点击ListView中的一个项目时应该调用它,听起来很简单,但我不能在我的生活中让onItemClickListener在我的ArrayAdapter上工作。 这是我的主要Activity : public class Schema extends Activity { private ArrayList lessons = new ArrayList(); private static final String TAG = “Schema”; ListView lstLessons; Integer lessonId; // called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // can we use the custom titlebar? requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // […]

如何在ArrayAdapter的列表开头添加对象?

ArrayAdapter具有方法add(T object) ,它在列表的末尾添加一个对象。 有没有办法在列表的开头添加对象?

android.R.layout.simple_spinner_dropdown_item与android.R.layout.simple_spinner_item的区别

这是在android中使用微调器的示例代码: Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.gender_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); 我知道我们需要为适配器中的数据行指定布局 但为什么再次使用setDropDownViewResource()方法。 我的意思是这个函数做了什么,并告诉我它与ArrayAdapter的构造函数有什么不同。 我已经阅读了文档,但完全不了解。

使用ArrayAdapter和Filter的Android AutocompleteTextView

背景信息 我目前正在撰写的应用程序处理地点。 创建场所的主要方法是输入地址。 提供便捷的方法对于UX来说非常重要。 当前解决方案 在调查问题一段时间后,我得出的结论是,最好的方法是根据当前位置和用户输入自动完成的文本区域(如Google Map应用程序中)。 由于Google Map API不提供此function,我必须自己实现。 目前的实施 为了获得地址建议,我使用Geocoder 。 这些建议由自定义ArrayAdaptor通过自定义filter提供给AutoCompleteTextView 。 ArrayAdapter(某些代码已被删除) public class AddressAutoCompleteAdapter extends ArrayAdapter { @Inject private LayoutInflater layoutInflater; private ArrayList suggested; private ArrayList lastSuggested; private String lastInput = null; private AddressLoader addrLoader; public AddressAutoCompleteAdapter(Activity activity, AddressLoaderFactory addrLoaderFact, int maxSuggestionsCount) { super(activity,R.layout.autocomplete_address_item); suggested = new ArrayList(); lastSuggested = […]

ArrayAdapter.getPosition(item)返回什么?

我看到文档说这个方法返回给定项的位置,但是如果ArrayAdapter中不存在这样的项,它会返回什么?

ListView中的自定义过滤ArrayAdapter

我是Android的初学者,但我尝试进行自定义列表视图过滤,我以某种方式工作。 我唯一的问题是我保留所有值(“原始”ArrayList)的ArrayList在每个过滤中的项目上越来越低。 我无法解释这一点,但我认为你可以以某种方式帮助我。 无论如何这里是Custom ArrayAdaptor: public class PkmnAdapter extends ArrayAdapter { private ArrayList original; private ArrayList fitems; private Filter filter; public PkmnAdapter(Context context, int textViewResourceId, ArrayList items) { super(context, textViewResourceId, items); this.original = items;//new ArrayList(); this.fitems = items;//new ArrayList(); } @Override public void add(Pkmn item){ original.add(item); } @Override public View getView(int position, View convertView, ViewGroup […]

Android如何知道哪个checkbox被选中

我正在做我的第一个Android应用程序,我遇到了一个问题,我无法在Google上find答案。 我想要一个带有checkbox的项目列表。 我希望项目本身和checkbox都是可点击的。 public class MyItem extends ListActivity { private ArrayList<MyItem> items; public void onCreate(Bundle savedInstanceState) { /* code which creates instances of MyItem and inserts them on the *list* variable */ MyArrayAdapter adapter = new MyArrayAdapter(this, R.layout.my_item, list); setListAdapater(adapter); setContentView(R.layout.items_list); } public onListItemClick(ListView l, View v, int position, long id){ //handles the click on […]

Android – 自定义ArrayAdapter类中的notifyDataSetChange

我有一个名为InteractiveArrayAdapter的自定义ArrayAdapter,它将button和button侦听器添加到列表视图中的每个项目。 在适配器内部有一个getView方法来创build一个视图充气机。 这里面是我的button创build和buttonListener创build的地方。 当button被点击时,我删除与该button相关联的ArrayList中的元素。 问题是,我不知道如何从这个OnClick方法中调用notifyDataSetChange,或另一种方式来通知适配器,listView需要更新。 自定义适配器 public class InteractiveArrayAdapter extends ArrayAdapter<String> { private final List<String> list; private final Activity context; private ListView listV; public InteractiveArrayAdapter(Activity context, List<String> list) { super(context, R.layout.rowbuttonlayout, list); this.context = context; this.list = list; } static class ViewHolder { protected TextView text; protected Button button; } @Override public View getView(int position, […]