Пример Android-уведомленияDataSetChanged()

Может ли кто-нибудь дать мне пример учебника или помочь мне использовать notifyDataSetChanged() в моем адаптере? Я получаю свои данные из базы данных и заполняю свой список. Также в моем списке у меня есть кнопка, чтобы понравиться этому конкретному контенту, после чего значение моей базы данных будет обновлено, а текст кнопки изменится на «Понравилось». Но я не уверен, как снова обновить список с данными из базы данных.


person Syed Sehu Mujammil A    schedule 03.07.2014    source источник
comment
Вы пытались его использовать? Просто вызовите этот метод, когда ваши данные изменятся.   -  person codeMagic    schedule 03.07.2014
comment
Я пробовал, но мои значения не обновляются. Я изложил свою проблему как вопрос с более подробной информацией здесь   -  person Syed Sehu Mujammil A    schedule 03.07.2014


Ответы (1)


ИЗМЕНИТЬ:

Создайте собственный класс для списка массивов в адаптере

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;
}
}

Основная деятельность

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();


        }


    });
}
person Manian Rezaee    schedule 03.07.2014
comment
Я только что проверил учебник. Я также проверил другие подобные учебники, подобные этому. Все учебные пособия объясняют Notifydatasetchanged() с помощью массива некоторых строк из кода Java. В моем случае я получаю данные из базы данных, и здесь у меня возникают проблемы с использованием Notifydatasetchanged(). Любые такие учебники с использованием базы данных ?? - person Syed Sehu Mujammil A; 03.07.2014
comment
Также во всех руководствах Notifydatasetchanged() используется при добавлении нового элемента в список. Но в моем случае я обновляю существующие данные текущего списка и пытаюсь обновить список, но по какой-то причине этого не происходит. - person Syed Sehu Mujammil A; 03.07.2014