Может ли кто-нибудь дать мне пример учебника или помочь мне использовать notifyDataSetChanged()
в моем адаптере? Я получаю свои данные из базы данных и заполняю свой список. Также в моем списке у меня есть кнопка, чтобы понравиться этому конкретному контенту, после чего значение моей базы данных будет обновлено, а текст кнопки изменится на «Понравилось». Но я не уверен, как снова обновить список с данными из базы данных.
Пример Android-уведомленияDataSetChanged()
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
Я только что проверил учебник. Я также проверил другие подобные учебники, подобные этому. Все учебные пособия объясняют Notifydatasetchanged() с помощью массива некоторых строк из кода Java. В моем случае я получаю данные из базы данных, и здесь у меня возникают проблемы с использованием Notifydatasetchanged(). Любые такие учебники с использованием базы данных ??
- person Syed Sehu Mujammil A; 03.07.2014
Также во всех руководствах Notifydatasetchanged() используется при добавлении нового элемента в список. Но в моем случае я обновляю существующие данные текущего списка и пытаюсь обновить список, но по какой-то причине этого не происходит.
- person Syed Sehu Mujammil A; 03.07.2014