как обновить ListView после удаления - PullRequest
0 голосов
/ 08 октября 2018

Здесь я использую пользовательский адаптер, реализуя кнопки listAdapter для поддержки в элементах списка.Когда я нажимаю кнопку «Удалить», он удаляет правильную строку.Но я не могу обновить этот список.

Структура файла: MainActivity -> FragmentClass-> этот пользовательский класс для listAdpater.

public class Category_ListView_Custom_Adapter extends BaseAdapter implements ListAdapter{

private Realm realm;
private ArrayList<String> list = new ArrayList<>();
private Context context;

public Category_ListView_Custom_Adapter(ArrayList<String> list, Context context){
    this.list = list;
    this.context = context;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int i) {
    return list.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
    View view1 = view;
    realm = Realm.getDefaultInstance();

    if(view == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.category_listview_row, null);
    }
    TextView listItemText = (TextView) view.findViewById(R.id.item);
    listItemText.setText(list.get(i));

    ImageView edit = (ImageView) view.findViewById(R.id.image);
    ImageView delete = (ImageView) view.findViewById(R.id.delete);

    edit.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
     //       list.remove(i);
     ///       Toast.makeText(view.getContext(), "hey "+list.get(i).toString(), Toast.LENGTH_SHORT).show();
     //       notifyDataSetChanged();
            Intent intent = new Intent(context, AddCategory.class);
            intent.putExtra("category","expense");
            intent.putExtra("subcategory", list.get(i));
            context.startActivity(intent);
        }
    });

    delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            RealmResults<Category> categorylist = realm.where(Category.class).equalTo("Id",i+1).and().equalTo("Subcategory",list.get(i)).findAll();

            for (Category category : categorylist) {

                realm.beginTransaction();
                categorylist.deleteFirstFromRealm();
                realm.commitTransaction();

                try {
                    context.notifyAll();
                }catch (Exception e){
                    Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
                }

             //   Expense.call_resume
            }
        }
    });

    return view;
}

}

Пожалуйста, помогите мне.Спасибо.

1 Ответ

0 голосов
/ 08 октября 2018

Вы удаляетесь от неправильного взгляда.Попробуйте сделать корневой List <> статическим и сделать Class.list.get (i) .remove или что-то в этом роде.

Кроме того, попробуйте скрыть представление в вашем представлении get.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...