Articles of android adapter

Android数据绑定:RecyclerView适配器的可观察列表

通过使用新数据绑定库和MVVM模式中的ObservableList类来避免使用Adapter类中的”notifyItem(s)…”方法,它们是一种方法吗? 或者如果不是,将ObservableList绑定到RecyclerView最简单方法是什么? 感谢任何线索!

Android:自定义列表视图中的单选按钮

我正在开发一个应用程序,我需要在列表视图中实现单选按钮。 我想实现一个列表视图,每行有一个单选按钮和两个文本视图。 列表视图下方有一个“确定”按钮。 我所做的是创建了一个列表视图和一个自定义适配器。 listview的代码如下: 我创建了一个自定义适配器布局: 片段的java代码如下: ListView listView = (ListView) view.findViewById(R.id.listview); // values is a StringArray holding some string values. CustomAdapter customAdapter = new CustomAdapter (getActivity(), values); listView.setAdapter(customAdapter ); listView.setOnItemClickListener(this); @Override public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) {} 适配器的代码如下: public class CustomAdapter extends ArrayAdapter { /** Global declaration of variables. […]

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,则仅对行布局进行膨胀。)

ListView或TableLayout?

我现在真的很困惑哪一个要学习。 我是一名iPhone应用程序开发人员,现在正在学习Android开发。 我已经学会了如何使用Adapter将ListView与静态字符串数组一起使用。 我习惯在iPhone中使用自定义单元格,主要用于在TableView显示图像和文本等动态内容。 那么在Android中这样做的方法是什么? TableLayout还是ListView ?

RecyclerView.Adapter.notifyItemChanged()永远不会将有效负载传递给onBindViewHolder()

我正在尝试更新RecyclerView的ViewHolder而不重新绑定整个事物。 根据文档,我应该通过调用RecyclerView.Adapter.notifyItemChanged(int position, Object payload)来做到这一点,其中payload是一个任意对象,将被传递给RecyclerView.Adapter.onBindViewHolder(VH holder, int position, List payloads) ,我将能够更新ViewHolder。 但是当我尝试这个时, onBindViewHolder总是会收到一个空列表。 在这两个调用之间,内部有效负载列表被清除。 在RecyclerView的源代码中设置断点后,会发生这种情况,因为重新布局,最终调用RecyclerView.ViewHolder.clearPayload() 有没有其他人设法让这个工作? 这是支持库中的错误还是我在触发这两个函数之间的重新布局时所做的事情? 这是清除有效负载时的堆栈跟踪: ” main@831692616832″ prio=5 runnable java.lang.Thread.State: RUNNABLE at android.support.v7.widget.RecyclerView$ViewHolder.clearPayload(RecyclerView.java:8524) at android.support.v7.widget.RecyclerView$ViewHolder.resetInternal(RecyclerView.java:8553) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4544) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4461) at android.support.v7.widget.LayoutState.next(LayoutState.java:86) at android.support.v7.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1423) at android.support.v7.widget.StaggeredGridLayoutManager.onLayoutChildren(StaggeredGridLayoutManager.java:610) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:581) at android.view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at […]

使用Android AutoCompleteTextView和ArrayAdapter 而不是ArrayAdapter

我想在我的android应用程序中使用AutoCompleteTextView。我知道如何使用简单的字符串数组,但我希望AutoCompleteTextView使用对象列表来执行完成。我的代码如下: 活动代码 public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.search); initialize(); ArrayAdapter adapter = new ArrayAdapter(this, R.layout.dropdown_list_item, GetAllStudentsList()); searchBox.setAdapter(adapter); searchBox.setThreshold(THRESHOLD_VALUE); searchBox.setTextColor(Color.BLACK); } searchBox.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int position, long arg3) { //Here i will grab the Student object that user selected from drop-down } }); […]

RecyclerView.ViewHolder无法使用ButterKnife绑定视图

我正在使用ButterKnife在ButterKnife上绑定我的观点。 我的代码如下: public class MyAdapter extends RecyclerView.Adapter { private List data; public MyAdapter(List data) { this.data = data; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_layout, parent, false); return new ViewHolder(view); } public static class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.row_header_view) View rowHeaderView; @BindView(R.id.row_header_view_text) TextView headerTextView; @BindView(R.id.row_data_view) View rowDataView; @BindView(R.id.row_data_view_text) TextView […]

RecyclerView适配器notifyDataSetChanged无法正常工作

我延长了 RecyclerView.Adapter 当我打电话的时候: mRecyclerView.getAdapter().notifyDataSetChanged(); 什么都没发生。 刷新视图的唯一方法是再次设置适配器( 请参阅此答案 ): mRecyclerView.setAdapter(new MyAdapter(…)); 这个解决方案有两个问题: 当我再次设置适配器时,我可以看到屏幕上闪烁 列表视图返回第一个位置。 有任何想法吗?

仅在getItemViewType更改时才调用RecyclerView onBindViewHolder

我有一个具有多个视图types的视图。 滚动onBindViewHolder仅在getItemViewType更改值时getItemViewType 。 这会导致我的列表项无法正确更新。 这是一个错误吗? 或者我在这里做错了什么。 这似乎是来自新的recyclerView类的非常奇怪的行为。 这是我的适配器: package se.davison.smartrecycleradapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.ViewGroup; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; /** * Created by richard on 10/11/14. */ public class SectionAdapter extends RecyclerView.Adapter { private static final String TAG = SectionAdapter.class.getSimpleName(); private final LayoutInflater inflater; […]

如何使用ViewPager和嵌套片段正确处理屏幕旋转?

我有这个活动,它有一个片段。 这个片段布局包含一个带有几个片段的视图寻呼机(实际上是两个片段)。 创建视图寻呼机时,会创建其适配器, 调用getItem并创建子片段。 大。 现在,当我旋转屏幕时,框架处理片段重新创建,适配器在我的onCreate从主片段再次创建,但getItem永远不会被调用 ,所以我的适配器保存错误的引用(实际上为空)而不是两个片段。 我发现片段管理器(即子片段管理器)包含一个名为mActive的片段数组,当然无法从代码中访问它。 但是有这个getFragment方法: @Override public Fragment getFragment(Bundle bundle, String key) { int index = bundle.getInt(key, -1); if (index == -1) { return null; } if (index >= mActive.size()) { throwException(new IllegalStateException(“Fragement no longer exists for key ” + key + “: index ” + index)); } Fragment f = […]