Articles of notifydatasetchanged

Android ListView刷新

我有一个Listview ,它从sqlite数据库中提取和显示数据。 数据库的第一列中的数据显示在ListView ,点击后, Activity开始显示与第一列关联的列的其余部分。 在编辑数据时,需要更新ListView以反映这一点,但是除非应用程序重新启动,否则不会显示更新。 我已经尝试在我的onResume()方法中调用notifyDataSetChanged()和startActivityForResult() onResume()方法,但这并不起作用。 我应该使用什么方法来完成当前代码中的ListView更新? 我明白一个SimpleCursorAdapter可能会被使用,我试图没有成功实现该代码。 我是新手,需要真正的代码来了解需要做什么。 public class LoginList extends Activity implements OnClickListener, OnItemClickListener { private ListView loginList; private Button webLogin; private ListAdapter loginListAdapter; private ArrayList<LoginDetails> loginArrayList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login_listview); loginList = (ListView) findViewById(R.id.loginlist); loginList.setOnItemClickListener(this); webLogin = (Button) findViewById(R.id.button3); webLogin.setOnClickListener(this); loginArrayList = new ArrayList<LoginDetails>(); loginListAdapter […]

如何recycleview适配器下另一个recycleview适配器?

我有一个RecyclerView 。 它有一个自定义的布局和自定义布局里面的是另一个RecyclerView 。 当我通知回收商视图,一个项目已被删除,我的主要回收视图更新,但我的自定义视图回收视图没有得到通知。 SwipeDismissRecyclerViewTouchListener listener = new SwipeDismissRecyclerViewTouchListener.Builder( recyclerView, new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() { @Override public boolean canDismiss(int position) { return true; } @Override public void onDismiss(View view) { // Do what you want when dismiss int id = recyclerView.getChildAdapterPosition(view); databaseHelper.deleteSingleItem(cartAdapter.cartItemName.get(id)); Log.e(TAG, "onDismiss: " + subdata.get(id) + " " + data.get(id)); subdataprice.remove(id); subdata.remove(id); addonlist.remove(id); price.remove(id); […]

为什么Glide在notifydataset改变时会使项目ImageView闪烁

我正在使用Glide 3.7.0与RecyclerView 。 项目视图总是在刷新时闪烁(调用notifyDataSetChanged )。 这是我的代码: Glide .with(context) .load(filepath) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .dontAnimate() .into(imageview); 当我使用没有caching时,当notifyDataSetChanged方法时, ImageView有一个notifyDataSetChanged图,并且Glide还没有完成加载位图。 如果我使用下面的代码: Glide .with(context) .load(filepath) .dontAnimate() .into(imageview); 然后,项目ImageView不再闪烁(使用caching)。 我想dynamic更新项目视图,所以我禁用滑动caching。 有没有解决这个眨眼错误的解决scheme? 非常感谢你!

为什么我不需要使用Adapter.notifyDataSetChanged()?

在执行readContacts()方法之前contactsList是空的,换句话说,当contactsView.setAdapter(adapter)被执行时, contactsList是空的,为什么这个代码仍然可以正确显示联系人的信息? public class MainActivity extends AppCompatActivity { ListView contactsView; ArrayAdapter<String> adapter; List<String> contactsList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); contactsView = (ListView) findViewById(R.id.contacts_list); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, contactsList); contactsView.setAdapter(adapter); readContacts(); } private void readContacts() { Cursor cursor = null; try { cursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, […]

RecyclerView在聊天屏幕上的notifyDataSetChanged上滚动到顶部

我正在尝试使用recyclerView创build消息types的屏幕,这将从底部开始,并将加载更多的数据,当用户到达最高端的聊天。 但是我面对这个奇怪的问题。 我的recyclerView在调用notifyDataSetChanged时滚动到顶部。 由于这onLoadMore被多次调用。 这是我的代码: LinearLayoutManager llm = new LinearLayoutManager(context); llm.setOrientation(LinearLayoutManager.VERTICAL); llm.setStackFromEnd(true); recyclerView.setLayoutManager(llm); **在适配器 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (messages.size() > 8 && position == 0 && null != mLoadMoreCallbacks) { mLoadMoreCallbacks.onLoadMore(); } **在活动 @Override public void onLoadMore() { // Get data from database and add into arrayList chatMessagesAdapter.notifyDataSetChanged(); } 这只是recyclerView滚动到顶部。 […]

如何更新ListView中的某些数据而不使用notifyDataSetChanged()?

我试图创build一个列表下载任务列表。 下载任务在Service (DownloadService)中pipe理。 每次接收到大量数据时,任务都会通过包含ListView (SavedShowListFragment)的Fragment接收的Broadcast发送进度。 在接收到Broadcast消息时,SavedShowListFragment将更新适配器中下载任务的进度,并触发notifyDataSetChanged() 。 列表中的每一行都包含一个ProgressBar ,一个用于下载文件标题的文本TextView ,一个用于进度数值的TextView ,以及一个用于暂停/恢复下载或在下载完成时播放保存的显示的Button 。 问题是,暂停/恢复/播放Button往往没有响应( onClick()没有被调用),我认为这是因为整个列表更新非常频繁与notifyDataSetChanged() (每次大块数据,即1024字节被接收,可以每秒多次,特别是当有多个下载任务运行时)。 我想我可以在下载任务中增加数据块的大小,但我真的认为我的方法不是最优的! 可能非常频繁地调用notifyDataSetChanged()使ListView UI无响应? 有没有办法更新ListView行中的一些Views ,即在我的情况下ProgressBar和TextView与ProgressBar的数值,而不调用notifyDataSetChanged() ,它更新整个列表? 要更新ListView下载任务的进度,是否有更好的select比“getChunk / sendBroadcast / updateData / notifyDataSetChanged”? 以下是我的代码的相关部分。 在下载服务中下载任务 public class DownloadService extends Service { //… private class DownloadTask extends AsyncTask<SavedShow, Void, Map<String, Object>> { //… @Override protected Map<String, Object> doInBackground(SavedShow… params) { //… […]

FragmentPagerAdapter notifyDataSetChanged不起作用

我有一个FragmentPagerAdapter。 它的getItem方法可以根据外部数据返回一个片段。 我更新数据后,假设显示我调用notifyDataSetChanged ,但什么也没有发生。 我DID重写getItemPosition方法返回POSITION_NONE : public static class TabsAdapter extends FragmentPagerAdapter implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener { private final Context mContext; private final TabHost mTabHost; private final ViewPager mViewPager; private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); private PagerTabsFragments fragmentDisplayInfo = null; // for now only a // single size // back // stack static class PagerTabsFragments […]

如何在RecyclerView上sorting(notifyDataSetChanged)期间提供自定义animation

目前,通过使用默认的animationandroid.support.v7.widget.DefaultItemAnimator ,这是我在sorting过程中的结果 DefaultItemAnimatoranimationvideo: https : //youtu.be/EccI7RUcdbg public void sortAndNotifyDataSetChanged() { int i0 = 0; int i1 = models.size() – 1; while (i0 < i1) { DemoModel o0 = models.get(i0); DemoModel o1 = models.get(i1); models.set(i0, o1); models.set(i1, o0); i0++; i1–; //break; } // adapter is created via adapter = new RecyclerViewDemoAdapter(models, mRecyclerView, this); adapter.notifyDataSetChanged(); } 但是,在sorting过程中(notifyDataSetChanged),而不是默认的animation,我更喜欢提供自定义animation如下。 […]

RecyclerView适配器notifyDataSetChanged不起作用

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

notifyDataSetChange不能从自定义适配器工作

当我重新填充我的ListView ,我从我的Adapter调用一个特定的方法。 问题 : 当我从我的Adapter调用updateReceiptsList ,数据刷新,但我的ListView不反映更改。 问题 : 为什么当我调用notifyDataSetChanged时,我的ListView显示新的数据? 适配器 : public class ReceiptListAdapter extends BaseAdapter { public List<Receipt> receiptlist; private Context context; private LayoutInflater inflater; private DateHelpers dateH; public ReceiptListAdapter(Activity activity, Context mcontext, List<Receipt> rl) { context = mcontext; receiptlist = rl; Collections.reverse(receiptlist); inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); dateH = new DateHelpers(); } @Override public int […]