Android notifyDataSetChanged()不';不要刷新我的回收视图
我需要一些帮助,我在尝试使用SearchView时遇到以下问题,我将把它们放到上下文中。 我有一个主要活动,它包含2个选项卡,每个选项卡都有各自的片段,在片段1中我必须包含,我想使用SearchView搜索和更新可用的选项卡列表,从片段1中我有一个RecycleServiceAdapter,它在该方法中实现filterable,获得一个比较和一个搜索结果,问题是,例如,对10寄存器4进行了比较,它们与搜索因子匹配,但不更新我的适配器 我的MyRecycleServiceAdapter:Android notifyDataSetChanged()不';不要刷新我的回收视图,android,android-recyclerview,searchview,notifydatasetchanged,Android,Android Recyclerview,Searchview,Notifydatasetchanged,我需要一些帮助,我在尝试使用SearchView时遇到以下问题,我将把它们放到上下文中。 我有一个主要活动,它包含2个选项卡,每个选项卡都有各自的片段,在片段1中我必须包含,我想使用SearchView搜索和更新可用的选项卡列表,从片段1中我有一个RecycleServiceAdapter,它在该方法中实现filterable,获得一个比较和一个搜索结果,问题是,例如,对10寄存器4进行了比较,它们与搜索因子匹配,但不更新我的适配器 我的MyRecycleServiceAdapter: pa
package com.rchile.piper.radioschile;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckedTextView;
import android.widget.CompoundButton;
import android.widget.Filter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import com.rchile.piper.radioschile.DataDB.DataBaseManager;
import com.rchile.piper.radioschile.MainActivity;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import android.widget.Filter;
import android.widget.Filterable;
import java.util.ArrayList;
class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> implements Filterable{
Context context;
public ArrayList<MainActivity.Radios> getDataAdapter;
private ArrayList<MainActivity.Radios> items;
private ArrayList<MainActivity.Radios> itemsFiltered;
Intent detailIntent;
private static DataBaseManager manager;
private static Cursor cursor;
CustomFilter filter;
/* public MyRecyclerViewAdapter(ArrayList<MainActivity.Radios> getDataAdapter, Context context, ArrayList<MainActivity.Radios> items) {
super();
this.getDataAdapter = getDataAdapter;
this.itemsFiltered = getDataAdapter;
this.context = context;
this.items = items;
}*/
public MyRecyclerViewAdapter(Context ctx,ArrayList<MainActivity.Radios> players)
{
this.context=ctx;
this.getDataAdapter=players;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_row, parent, false);
ViewHolder viewHolder = new ViewHolder(v, context, getDataAdapter);
return viewHolder;
}
public MyRecyclerViewAdapter(ArrayList<MainActivity.Radios> getDataAdapter) {
this.getDataAdapter = getDataAdapter;
}
/* public MyRecyclerViewAdapter(Context context) {
this.context = context;
}*/
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.label.setText(getDataAdapter.get(position).getNombre());
holder.idRadio.setText(getDataAdapter.get(position).getIdRadio());
holder.sintonia.setText(getDataAdapter.get(position).getSintonia());
String urlIcono = getDataAdapter.get(position).getUrlIcono();
String esFavorito = getDataAdapter.get(position).getEsFavorito();
Context contextt = holder.icono.getContext(); //<----- Add this line
Context contextt2 = holder.imageButton.getContext();
Picasso.with(contextt).load(urlIcono).into(holder.icono);
if(esFavorito.equals("0")){
Picasso.with(contextt2).load(R.drawable.es_favorito).into(holder.imageButton);
}else{
Picasso.with(contextt2).load(R.drawable.no_favorito).into(holder.imageButton);
}
holder.imageButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
fav(position,v);
}
});
}
@Override
public int getItemCount() {
return getDataAdapter.size();
}
@Override
public Filter getFilter() {
if(filter==null)
{
filter=new CustomFilter( getDataAdapter,this);
}
return filter;
}
class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
TextView label,idRadio,sintonia;
TextView dateTime;
RelativeLayout relativeLayout;
ImageView icono;
ImageButton imageButton;
ImageButton fav;
Context context;
ArrayList<MainActivity.Radios> getDataAdapter;
public ViewHolder(View itemView, Context context, ArrayList<MainActivity.Radios> getDataAdapter) {
super(itemView);
itemView.setOnClickListener(this);
this.getDataAdapter = getDataAdapter;
this.context = context;
label = (TextView) itemView.findViewById(R.id.txt_nombre);
idRadio = (TextView) itemView.findViewById(R.id.txt_id);
sintonia = (TextView) itemView.findViewById(R.id.txt_sintonia);
icono = (ImageView) itemView.findViewById(R.id.imgIcono);
imageButton = (ImageButton) itemView.findViewById(R.id.buttonInfo);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
MainActivity.Radios getDataAdapter = this.getDataAdapter.get(position);
detailIntent = new Intent(v.getContext(), Reproducir.class);
detailIntent.putExtra("numero", getDataAdapter.getIdRadio());
v.getContext().startActivity(detailIntent);
}
}
public void fav(final int position,View v) {
ImageButton imageButton2;
imageButton2 = (ImageButton) v.findViewById(R.id.buttonInfo);
MainActivity.Radios getDataAdapter = this.getDataAdapter.get(position);
manager = new DataBaseManager(v.getContext());
cursor = manager.buaca1(getDataAdapter.getIdRadio());
String esFavorito = "";
if (cursor.getCount() == 1){
if (cursor.moveToFirst()) {
do {
esFavorito = cursor.getString(4);
} while (cursor.moveToNext());
}
if(esFavorito.equals("0")){
esFavorito = "1";
manager.updateFavorito(getDataAdapter.getIdRadio(),esFavorito);
Picasso.with(v.getContext()).load(R.drawable.no_favorito).into(imageButton2);
}else{
esFavorito = "0";
manager.updateFavorito(getDataAdapter.getIdRadio(),esFavorito);
Picasso.with(v.getContext()).load(R.drawable.es_favorito).into(imageButton2);
}
}
}
}
package com.rchile.piper.chile;
导入android.content.Context;
导入android.content.Intent;
导入android.database.Cursor;
导入android.graphics.Bitmap;
导入android.graphics.Typeface;
导入android.graphics.drawable.BitmapDrawable;
导入android.graphics.drawable.drawable;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.CheckedTextView;
导入android.widget.CompoundButton;
导入android.widget.Filter;
导入android.widget.ImageButton;
导入android.widget.ImageView;
导入android.widget.RelativeLayout;
导入android.widget.TextView;
导入android.widget.Toast;
导入android.widget.ToggleButton;
导入com.rchile.piper.radioscile.DataDB.DataBaseManager;
导入com.rchile.piper.radioschile.main活动;
导入com.squareup.picasso.picasso;
导入com.squareup.picasso.Target;
导入android.widget.Filter;
导入android.widget.Filterable;
导入java.util.ArrayList;
类MyRecycleServiceAdapter扩展了RecyclerView。适配器实现可筛选{
语境;
公共ArrayList getDataAdapter;
私有ArrayList项;
过滤的私有ArrayList项;
意图;意图;
私有静态数据库管理器;
私有静态游标;
自定义过滤器;
/*公共MyRecycleServiceAdapter(ArrayList getDataAdapter、上下文上下文、ArrayList项){
超级();
this.getDataAdapter=getDataAdapter;
this.itemsFiltered=getDataAdapter;
this.context=上下文;
这个项目=项目;
}*/
公共MyRecycleServiceAdapter(上下文ctx、ArrayList播放器)
{
this.context=ctx;
这个.getDataAdapter=players;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.card\u View\u行,parent,false);
ViewHolder ViewHolder=新的ViewHolder(v,context,getDataAdapter);
返回视图持有者;
}
公共MyRecycleServiceAdapter(ArrayList getDataAdapter){
this.getDataAdapter=getDataAdapter;
}
/*公共MyRecycleServiceAdapter(上下文){
this.context=上下文;
}*/
@凌驾
公共无效onBindViewHolder(ViewHolder,最终int位置){
holder.label.setText(getDataAdapter.get(position.getNombre());
holder.idRadio.setText(getDataAdapter.get(position.getIdRadio());
holder.sintonia.setText(getDataAdapter.get(position.getSintonia());
字符串urlIcono=getDataAdapter.get(位置).getUrlIcono();
字符串esFavorito=getDataAdapter.get(位置).getEsFavorito();
Context contextt=holder.icono.getContext();//0)
{
//换到上
charSequence=charSequence.toString().toUpperCase();
//存储我们过滤的播放器
ArrayList filteredPlayers=新的ArrayList();
对于(int i=0;i您在adapter.getDataAdapter.clear();
之后缺少adapter.notifyDataSetChanged();
,这也是必需的,因为数据已更改。请按如下方式添加它:
adapter.getDataAdapter.clear();
adapter.notifyDataSetChanged();
adapter.getDataAdapter.addAll((ArrayList<MainActivity.Radios>) results.values);
adapter.notifyDataSetChanged();
adapter.getDataAdapter.clear();
adapter.notifyDataSetChanged();
adapter.getDataAdapter.addAll((ArrayList)results.values);
adapter.notifyDataSetChanged();
adapter.getDataAdapter.clear();
adapter.notifyDataSetChanged();
adapter.getDataAdapter.addAll((ArrayList<MainActivity.Radios>) results.values);
adapter.notifyDataSetChanged();