我想知道是否有任何优化的方法可以创建一个适配器,该适配器中包含超过1K对象的适配器. 我已经尝试了以下内容,但结果仍然没有任何希望. A.View Holder模式 - 它有所帮助,但是当对象大小增加时,它开始就会出现问题 b.note:我本可以使用一个分页的API,该API通过了定义的对象,但我annot在我的场景中有分页的API. c.我的列表确实有图像,但我已经照顾了. 现在还不是问题. 让我知道实现可以在其中包含大量对象列表的适配器而没有任何问题的任何新方法. 据我所知, 解决方案 我在下面使用一些结构 使用Viewholder 如果您不使用 ,请勿创建新对象 优化布局层次结构 -layouts/optimizing-layout.html 防止透支 /performance/debug-gpu-overdraw/index.html load ListView in ListView:我正在使用"通用图像加载器"
以下是关于 android-adapter 的编程技术问答
我有一个适配器类,我在此布局中有一个复选框,并且使用" onclicklistener"方法我尝试声明" check = true",但是adt询问我声明final final viewholder 这是我的适配器类 public class MaterialAdapter extends ArrayAdapter { public MaterialAdapter(Context context, int resource, List objects) { super(context, resource, objects); // TODO Auto-generated constructor stub } @Override public View getView(int position, View convertView, ViewGroup parent) { Vi
我已经对我的RecyClerview的视图持有人实施了OnClick的听众 但是,当我执行非常快速的双水龙头或鼠标点击时,它执行任务(在这种情况下打开单独的片段)两次或三次. 这是我的代码 public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView tvTitle, tvDescription; public ViewHolder(View itemView) { super(itemView); itemView.setClickable(true); itemView.setOnClickListener(this); tvTitle = (TextView) itemView.findViewById(R.id.tv_title);
如何获取Recyclerview项目中单击按钮的位置 这是我的OnBindViewHolder: public void onBindViewHolder(MyViewHolder holder, int position) { Masar masar=masrList.get(position); holder.masarName.setText(masar.getMasarTitle()); holder.masarDesc.setText(masar.getMasarDescreption()); //How to get the Position holder.masarImg.setImageResource(masar.getMasarImg()); holder.mapBtn.setOnClickListener(new View.OnClickListener() { @Overrid
我正在使用Fabric创建一个Twitter客户端,但我无法创建自定义onclick. 我创建了这个自定义适配器,并尝试创建一个单切底式的,但不起作用.始终在浏览器推文中打开. public class TweetAdapter extends TweetTimelineListAdapter { public ArrayList tweetIds=new ArrayList(); public TweetAdapter(Context context, Timeline timeline) { super(context, timeline); } @Override public View getView(int position, View convertView, ViewGroup parent) { Object rowView = convertView
由于某种原因,我得到一个无效的指针,指出 videosfound 的确不是零.即使是参数,适配器也被传递给了无效.我简单地打印出其null(两个都不是零)来检查和验证此问题.所以有人可以告诉我我如何遇到这个错误? private ListView videosFound; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); searchInput = (EditText)findViewById(R.id.search_input); videosFound = (ListView)findViewById(R.id.videos_found); handler = new Handler
我在我的一个值的文件夹之一中列出了一个数组列表,现在我想通过从源文件夹中检索NullPointerException: 将其调整为旋转器. spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.worker,android.R.layout.simple_list_item_1); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); logcat中的消息: Caused by: android.content.res.Resources$NotFoundException: String array resource ID #0x7f090001 at android.content
是通过使用新数据绑定库和MVVM模式的ObservableList类,以避免使用Adapter类的"notifyItem(s)..."方法? 或如果不是,则最简单的方法是将ObservableList绑定到RecyclerView? 谢谢您的任何线索! 解决方案 请查看以下RecyclerView的适配器的实现: https://github.com/radzio/android-data-binding-recyclerview/blob/master/recyclerview-binding/src/main/java/net/droidlabs/mvvm/recyclerview/adapter/BindingRecyclerViewAdapter.java 它会自动通知回收器视图,如果OnListChangedCallback被称为. 还可以查看其余的存储库.它显示了如何使用XML将您的ObervableList绑定到适配器.这样您就可以拥有
我一直在搜索并找到了一些近距离的问题和答案,但它们都没有起作用. 我正在使用 coordinatorLayout 用于列表 recyclerview appbarlayout 和工具栏... 我的目标: ieDeia非常简单,当您首先滚动视图时,工具栏中的Appbar倒塌了,此后,RecyClerview开始滚动. 我的层次结构: 我的片段recyclerview(垂直)具有带有新布局的适配器-A,此适配器称RecyClerview(水平)为第二个适配器B. 所以我有这样的结构: (不是代码,只是为了显示如何工作) Fragment AppBarLayout{..} Fragment Recycler View (Vertical) { Adapter-A Text; Adapter-A Recycler View (Horizontal){ Adapter-B Img; Adapter-B Text;
我需要知道,当用户单击一项(例如WhatsApp联系人)时,WhatsApp向用户显示了一个图片示例: 这是回收视图项目: 我正在使用: 主活动: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView rv = (RecyclerView)findViewById(R.id.rv); rv.setHasFixedSize(true); LinearLayoutManager llm = new LinearLayou
我已经实现了回收卡视图,并想使用按钮单击方法来复制卡片视图的内容. CardView中的Aretwo文本,我只想复制内容,不同的卡片不同.我怎样才能做到这一点? 这是我的卡浏览适配器. public static class ViewHolder extends RecyclerView.ViewHolder{ Button copyButton; Button shareButton; TextView title; TextView content; public ViewHolder(View itemView) { super(itemView); this.title = (TextView)itemView.findViewById(R.id.card_title); this.content = (TextVi
我有一个问题,当我滑动以刷新数据时,第一个滑动是可以的...我正在使用装载机. 我以前试图清除,但我不明白我的代码有什么问题,如果有人可以向我解释.谢谢. 在这里我的代码: public abstract class NewsFragment extends Fragment implements LoaderManager.LoaderCallbacks> { protected ItemAdapter mArticleAdapter; protected RecyclerView mRecyclerView; protected NewsFragment.OnNewSelectedInterface mListener; protected RecyclerView.LayoutManager mManager; protected SwipeRefreshLayout mSwipeRefr
从我的活动中,我打电话给我的MovieTask扩展AsyncTask. 我从MovieTask的doInBackground方法中成功解析的服务器得到了JSON响应. 现在,我的活动中有一个listView,我想使用扩展ArrayAdapter的MovieListAdapter填充列表视图. 对于每个视图(即一行),我想填充3 TextView s.我正在覆盖MovieListAdapter MovieListAdapter的方法. 但是我不明白如何将数据从我的活动中将数据发送到getView方法来填充文本视图? public class MovieTask extends AsyncTask{ @Override protected String doInBackground(String... urls) { //I HAVE GOT THE JSON DATA THAT
i有ArrayList data,它使用CustomAdapter. 我在CustomAdapter类中实现了View.OnClickListener,然后单击一个按钮删除特定行.删除行后,从数据库和使用自定义适配器内的data.remove(i)从数据库和data对象中删除行,我调用notifyDataSetChanged(). . 问题是它不会刷新ListView. 我正在使用带有片段的选项卡式活动.因此,当转到遥远的选项卡并返回此选项卡时,它会刷新ListView,并且已删除的项目不再显示. 为什么ListView当我打电话notifyDataSetChanged()时不会立即刷新,但是当我移到另一个片段然后返回时会改变? 我的CustomAdapter类如下: public class CustomAdapter extends BaseAdapter implements View.OnClickListener {
我的代码有问题.我正在学习如何使用Android创建简单的Firebase Crud应用程序.这是我的主activity代码: package com.ogigpermana.crudfirebaseapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.Toast; import com.google.firebase.database.DataSnapshot; impo
在将新项目插入我的列表之后,我的列表无法刷新并使用notifyDataSetChanged()进行更新 adapter = new ReceivedAdapter(context, items); getRequestFromServer(0, 10); 之后,我在列表和适配器中有10个项目. private String getRequestFromServer(long lastID, int count) { String received = ""; try { received = new JsonService(config_username, config_password, lastID, count, G.F_RECEIVE_SMS).request(); JSONArray data_array = new JSONArray(received); String mUserID = conf
我有一个应用程序,该应用程序允许用户选择一个选项,并且在ListView中显示某个列表.我在获取它以保存和恢复状态时遇到问题.我有一个list_mode可以根据用户选择哪个选项进行设置.到目前为止,我已经保存了适配器的状态,但是还原它会引起问题(我知道它是在保存,因为当我检查CustomAdapter.onrestoreRestoreInstancestate(savedinstancestate)时,它是在ongreate中的很难将其还原到列表视图.它将在还原上崩溃.它在getallitems.clear和.addall上崩溃.我什至将其硬编码为其中一个列表,但也没有起作用.然后它在主要活动中崩溃了.当涉及到Java和Android并且仍在学习.我不知道我有多近或有多远.有人可以对我做错了什么和我如何使它工作?谢谢 列表适配器: public class ListAdapter extends BaseAdapter { private static final Strin
我有一个扩展ArrayAdapter的客户适配器(SongsAdapter),并且包含一个Song对象的数组.在我的片段onCreateView方法中,我正在尝试初始化此适配器. adapter = new SongsAdapter(getContext(), arrayOfSongs); 问题是arrayOfSongs最初是空的.用户应在iTunes数据库上搜索一首歌,当我得到响应时,我会解析JSON并创建歌曲对象,然后将它们添加到我的适配器 adapter.addAll(songs); ,然后 adapter.notifyDataSetChanged(); 但是我得到了例外 java.lang.NullPointerException at android.widget.ArrayAdapter.getCount 如何隐藏ListView,直到用户第一次搜索,然后将其放开以显示结果.我将如何正确初始化适配器? 这是我的适配器 pu
嗨,我必须使用SOAP调用在Android中开发一个ListView应用. 但是,订单和状态成功地显示在ListView上..但是在这里面临一些问题...订单和状态以下格式显示: 1 --------- F2 ---------- Q3 ---------- P ----------- ,但我希望在下面显示: 1 F --------- 2 Q --------- 3 P --------- 这是我的 Android代码: public class RetailerActivity extends Activity { ListView list; private static final String SOAP_ACTION = "http://xcart.com/customerData1"; private static final String METHOD_NAME = "customerData1"; private static final
我的标题可能对您来说似乎不清楚. 由于Java的新事物和缺乏逻辑,我想问您简单的事情. 我有一个活动类,其中有两个文本视图和一个图像视图的培训列表.在某些情况下,我想转到ListView的ListView.该条件您可以在下面的代码中看到. 活动类; public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { currentTraining = (Training) arg0.getAdapter().getItem(arg2); SharedMemory.getInstance().setCurrentTraining(currentTraining); startTraining(); } @SuppressLint("SimpleDateFormat") private void startTraining() throws Pa