Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android notifyDataSetChanged()示例_Android_Android Listview_Notifydatasetchanged - Fatal编程技术网

Android notifyDataSetChanged()示例

Android notifyDataSetChanged()示例,android,android-listview,notifydatasetchanged,Android,Android Listview,Notifydatasetchanged,有人能给我一个示例教程或指导我在适配器中使用notifyDataSetChanged()?我正在从数据库中获取数据并填充列表视图。此外,在我的listview中,我有一个喜欢特定内容的按钮,在该按钮上,我的数据库值将被更新,按钮文本将更改为“喜欢”。但我不知道如何使用数据库中的数据再次刷新我的listview。编辑: 为适配器中的数组列表创建自定义类 public class Entity { int id; variables .......... boolean isLiked = fa

有人能给我一个示例教程或指导我在适配器中使用
notifyDataSetChanged()
?我正在从数据库中获取数据并填充列表视图。此外,在我的listview中,我有一个喜欢特定内容的按钮,在该按钮上,我的数据库值将被更新,按钮文本将更改为“喜欢”。但我不知道如何使用数据库中的数据再次刷新我的listview。

编辑:

为适配器中的数组列表创建自定义类

public class Entity   {
int id;
variables ..........
boolean isLiked = false;

public Entity(some values){
  // set the id;
  variables = values ;
}
public void setLiked(boolean like){
   this.isLiked = like; 
   // you must update database here
 }
public boolean IsLiked(){ return this.isLiked; } 

}
创建自定义适配器

public class EntityAdapter extends ArrayAdapter<Entity> { 
.................................
........other methods............
.................................

public View getView(int position, View convertView, ViewGroup parent) {

    final Entity entity = arrayList.get(position);

    final ViewHolder holder;
    View view = convertView;
     if (view == null) {

        int layoutCode=this.layoutcode;


        view = ((Activity) context).getLayoutInflater().inflate(layoutCode, parent, false);

        holder = new ViewHolder();
        assert view != null;


        holder.chkLike=(CheckBox) view.findViewById(R.id.chkLike);

        view.setTag(holder);
     } else {
        holder = (ViewHolder) view.getTag();
     }


    holder.chkLike.setChecked(entity.IsLiked()); 

    return view;
}
class ViewHolder { 
    CheckBox chkLike;
}
}
公共类EntityAdapter扩展了ArrayAdapter{
.................................
……其他方法。。。。。。。。。。。。
.................................
公共视图getView(int位置、视图转换视图、视图组父视图){
最终实体=arrayList.get(位置);
最终持票人;
视图=转换视图;
如果(视图==null){
int layoutCode=this.layoutCode;
视图=((活动)上下文).getLayoutFlater().inflate(layoutCode,父项,false);
holder=新的ViewHolder();
断言视图!=null;
holder.chkLike=(复选框)view.findViewById(R.id.chkLike);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.chkLike.setChecked(entity.IsLiked());
返回视图;
}
类视图持有者{
chkLike;
}
}
主要活动

public class Main extends Activity{
    EntityAdapter adapter;
    GridView gridView  = null;


   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
       ArrayList<Entity> arraylist = EntityHelper.fetch("select * from entity",this);


      adapter = new EntityAdapter(this, R.layout.item_grid_image, arraylist);


       gridView.setAdapter(adapter);

     gridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {

             adapter.getItem(pos).setLiked(true);
             adapter.notifyDataSetChanged();


        }


    });
}
public类主扩展活动{
实体适配器;
GridView GridView=null;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList ArrayList=EntityHelper.fetch(“从实体中选择*”,此选项);
adapter=新的EntityAdapter(此,R.layout.item\u grid\u图像,arraylist);
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共单击(适配器视图arg0,视图arg1,内部位置,
长arg3){
adapter.getItem(pos.setLiked)(true);
adapter.notifyDataSetChanged();
}
});
}

您尝试过使用它吗?只要在数据更改时调用该方法即可。我尝试过,但我的值没有更新。我已将问题作为一个问题,并提供了更多详细信息。我刚刚查看了教程。我还查看了类似的其他教程。所有教程都在解释Notifydatasetchanged()使用java代码内部的一些字符串数组。在我的例子中,我从数据库获取数据,这就是我在使用Notifydatasetchanged()时遇到问题的地方。任何使用数据库的教程??在所有教程Notifydatasetchanged()中也是如此在向列表中添加新项目时使用。但在我的情况下,我正在更新当前列表的现有数据并尝试刷新列表,但由于某种原因它不会发生。