我RecyclerView用它实现了Custom Adapter如下
全球宣言如下
private LinearLayoutManager linearLayoutManager;
private int pastVisibleItems, visibleItemCount, totalItemCount;
private CustomRecyclerViewAdapter customRecyclerViewAdapter;
Run Code Online (Sandbox Code Playgroud)
首先,我在onCreate()方法内部创建了适配器实例,其中包含Empty Array并将其设置为recyclerView
linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(
Utility.ItemDecorationConst);
recyclerView.addItemDecoration(dividerItemDecoration);
customRecyclerViewAdapter = new CustomRecyclerViewAdapter(getActivity());
recyclerView.setAdapter(customRecyclerViewAdapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
visibleItemCount = linearLayoutManager.getChildCount();
totalItemCount = linearLayoutManager.getItemCount();
pastVisibleItems = linearLayoutManager.findFirstVisibleItemPosition();
if (loading) {
if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
loading = false;
customRecyclerViewAdapter.addProgressBarEntry();
controller.getNextPage(PublisherAppContainerFragment.this);
}
} …Run Code Online (Sandbox Code Playgroud) android observers notifydatasetchanged recycler-adapter android-recyclerview
我使用滑翔3.7.0用RecyclerView.刷新(调用notifyDataSetChanged)时,项目视图始终闪烁.
这是我的代码:
Glide
.with(context)
.load(filepath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.dontAnimate()
.into(imageview);
Run Code Online (Sandbox Code Playgroud)
当我不使用缓存时,在调用方法ImageView时notifyDataSetChangedGlide尚未完成加载位图时,它具有空位图.
如果我使用以下代码:
Glide
.with(context)
.load(filepath)
.dontAnimate()
.into(imageview);
Run Code Online (Sandbox Code Playgroud)
然后项目ImageView不再闪烁(使用缓存).
我想动态更新项目视图,因此我禁用了滑动缓存.
有没有解决这个眨眼错误的解决方案?
非常感谢你!
android blink notifydatasetchanged android-recyclerview android-glide
问题描述:
我在AutoCompleteTextView面临一些问题,我必须在每次按键后显示建议.事情是,建议列表是动态像谷歌的建议功能.这意味着应该在用户输入时添加新建议,并且应显示所有匹配的旧建议.
例如
我写"te"然后它应该显示以前的建议,如"test1"和"test2"以及我将从Web API获得的新建议.假设web api给了我"茶"和"紧张"的字样.
现在,AutoCompleteTextView将"te"作为字符串,其下方显示所有四个建议.
这正是我要找的.
看起来很简单,但它显示出一种奇怪的行为.
我正在使用我在全局声明的默认ArrayAdapter类实例.
arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,suggestions);
word.setAdapter(arrayAdapter);
Run Code Online (Sandbox Code Playgroud)
建议是ArrayList.
从WebApi获得新结果后,我只需致电
arrayAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
刷新数据观察者和附加的视图(在我们的例子中是AutoCompleteListView).
但它结束了建议.
当我不使用notifyDataSetChanged();它时,无论我输入的字符是什么,都会显示所有建议.
我尝试使用自定义过滤器,因为我不能使用notifyDataSetChanged(),但没有一个是有用的.
我发布图片以避免混淆.
我有一个混乱,为什么notifyDataSetChanged();它不起作用.我没有使用相同的arrayAdapter实例的任何其他列表引用.我真的怀疑这是一个参考问题.
android autocompletetextview notifydatasetchanged android-filterable
当我滚动它时,我的 recyclerview 正在复制项目并且我已经在调用adapter.notifyDataSetChanged().
所以,可能我在错误的地方调用了数据集更新,但我找不到它是如何工作的。
这是一些代码:
RecyclerView packageRecyclerView;
Intent intent;
ChecklistAdapter recyclerViewAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_checklist);
intent = getIntent();
size = intent.getIntExtra("size", 0);
Log.d(TAG, "onCreate - Qtd Questões: " + size);
packageRecyclerView = findViewById(R.id.package_lst);
LinearLayoutManager recyclerLayoutManager = new LinearLayoutManager(this);
packageRecyclerView.setLayoutManager(recyclerLayoutManager);
DividerItemDecoration dividerItemDecoration =
new DividerItemDecoration(packageRecyclerView.getContext(),
recyclerLayoutManager.getOrientation());
packageRecyclerView.addItemDecoration(dividerItemDecoration);
List<Checklist> modelList = new ArrayList<>();
recyclerViewAdapter = new ChecklistAdapter(modelList,this);
modelList = getPackages();
recyclerViewAdapter = new ChecklistAdapter(modelList,this);
// recyclerViewAdapter = new ChecklistAdapter(getPackages(),this);
packageRecyclerView.setAdapter(recyclerViewAdapter);
}
private List<Checklist> getPackages() { …Run Code Online (Sandbox Code Playgroud) 我有一个expandableListView并试图改变它的孩子:
((SubItem) adapter.getChild(i+1, 5)).setCount(unreadBox);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
这是我的适配器类:
public class DrawerAdapter extends BaseExpandableListAdapter {
private Context context;
private List<Item> items;
private List<List<SubItem>> subItems;
public DrawerAdapter(Context context, List<Item> items, List<List<SubItem>> subItems) {
this.context = context;
this.items = items;
this.subItems = subItems;
}
@Override
public int getGroupCount() {
return items.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return subItems.get(groupPosition).size();
}
@Override
public Object getGroup(int position) {
return items.get(position);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return subItems.get(groupPosition).get(childPosition);
}
@Override
public long getGroupId(int …Run Code Online (Sandbox Code Playgroud) 在方法执行contactsList之前是空的readContacts(),换句话说,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, null);
while (cursor.moveToNext()) {
String displayName = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
));
String number = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER
));
contactsList.add(displayName + …Run Code Online (Sandbox Code Playgroud) android android-listview android-adapter notifydatasetchanged
我notifyDataSetChanged在reinlerview上执行后尝试遵循一组语句.但是当我调试我的应用程序时,调试器notifyDataSetChanged在转到onBindViewHolderrecyclerview的适配器之后到达接下来的几行.所以我的问题是 - notifyDataSetChanged是异步调用吗?如果是,我们会收到回电吗?PS:我已经搜索了这个答案,我找不到合适的答案,这就是我向社区提问的原因.
android asynchronous notifydatasetchanged android-recyclerview
我正在为RecyclerView实现无休止的数据加载.当软件检测到将显示最后一个项目时,它会下载新项目并调用该loadMoreData()函数,但不会显示新数据集.
当我打电话时notifyDataSetChanged(),没有什么事情发生.
我只有一个刷新视图的解决方案是再次设置适配器,但问题是recyclerview返回到第一个位置然后再次recyclelerview从第一个位置向上滚动到最后一个位置.
RecyclerViewActivity.java
RecyclerView rv;
DatabaseHelpr databaseHelpr;
RVAdapter adapter;
LocationFinder locationfinder;
Location currentLocation;
ArrayList<ServiceModel> childList, list;
private int MainService_ID, city_id;
String url2;
ActionBar actionBar;
JSONArray items = null;
Utility utility;
Double lat, longi;
LinearLayoutManager llm;
int counter=0;
ProgressBar progressBar;
private static final String TAG_ITEMS = "items";
private static final String TAG_LOCALITY = "Locality";
private static final String TAG_BUSINESS_ID = "Business_Id";
private static final String TAG_LONGITUDE = "Longitude";
private static final String TAG_BUSINESS_NAME = "Business_Name";
private …Run Code Online (Sandbox Code Playgroud) android notifydatasetchanged endlessscroll recycler-adapter android-recyclerview
我有一个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);
data.remove(id);
cartAdapter.notifyItemRemoved(id);
Log.e(TAG, data.size() + " onDismiss: size " + subdata.size());
totalPriceTextView.setText(String.valueOf(getTotal()));
cartAdapter.updateRecycler();
}
})
.setIsVertical(false)
.setItemClickCallback(new SwipeDismissRecyclerViewTouchListener.OnItemClickCallBack() {
@Override
public void onClick(int i) { …Run Code Online (Sandbox Code Playgroud) android android-adapter notifydatasetchanged android-recyclerview
我正在提高应用程序的稳定性和性能,但现在我遇到了来自 Android Studio 的警告。请考虑以下 Adapter 类:
private class CoinsAdapter(private val fragment: CoinFragment, private val coins: List<Coin>): RecyclerView.Adapter<CoinsAdapter.ViewHolder>(), Filterable {
private val filter = ArrayList(coins)
override fun onCreateViewHolder(parent: ViewGroup, position: Int): ViewHolder {
val binding = ItemCoinBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val coin = filter[position]
holder.binding.coinImage.setImageResource(coin.image)
holder.binding.coinText.text = builder.toString()
}
override fun getItemCount() = filter.size
override fun getFilter() = object : Filter() {
override fun performFiltering(constraint: CharSequence): FilterResults {
if (constraint.length < 2) …Run Code Online (Sandbox Code Playgroud)