Android-ArrayAdapter в списке не обновляется - PullRequest
1 голос
/ 01 января 2012

В настоящее время у меня есть список с использованием ArrayAdapter. Я начинаю без данных и динамически добавляю данные, используя пользовательский ввод. По какой-то причине, когда я звоню adapter.notifyDataSetChanged(), представление списка не обновляется. Для целей тестирования я добавил некоторые базовые данные, и это происходит просто, поэтому адаптер работает правильно. Это первый раз, когда я внедряю свой собственный адаптер, поэтому я не уверен, что делаю что-то не так или нет. Благодарю. Код ниже.

Мой адаптер:

public class FeedListviewAdapter extends ArrayAdapter<FeedPostingLayout> {
    // add the feed posting layout
    ArrayList<FeedPostingLayout> postingLayout;

    public FeedListviewAdapter(Context context, int textViewResourceId,
            ArrayList<FeedPostingLayout> postingLayout) {
        super(context, textViewResourceId, postingLayout);
        this.postingLayout = postingLayout;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.post_layout, null);
        }

        FeedPostingLayout layout = postingLayout.get(position);
        if (layout != null) {
            TextView post = (TextView) view.findViewById(R.id.postTextView);
            TextView time = (TextView) view
                    .findViewById(R.id.postTimeTextView);

            if (post != null) {
                post.setText(layout.feedPost);
            }

            if (time != null) {
                time.setText(layout.feedTime);
            }
        }

        return view;
    }

}

Где я создаю новый массив, добавляю его в мои данные и затем обновляю адаптер:

FeedPostingLayout test = new FeedPostingLayout(post, currentTimePost);
        data.add(test);
        feedAdapter.notifyDataSetChanged();

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Попробуйте добавить непосредственно в ArrayAdapter.

Например:

FeedListviewAdapter adapter=new FeedListviewAdapter(ctx,id,data);
FeedPostingLayout test = new FeedPostingLayout(post, currentTimePost);
adapter.add(test);
adapter.notifyDataSetChanged();
0 голосов
/ 03 марта 2012

Просто на этот раз попробуйте заменить массив, скажем что-то вроде

setPostingLayout(ArrayList<FeedPostingLayout> postingLayout) {
    this.postingLayout = postingLayout;
    notifyDataSetChanged();
} 

Причина, по которой у архива есть разные копии, изменения, внесенные в данные, не будут отражены в postingLayout.

...