我目前有一个使用ArrayAdapter的listview。我从没有数据开始,并使用用户输入动态添加数据。出于某种原因,当我调用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();
感谢。
答案 0 :(得分:1)
尝试直接在ArrayAdapter
添加。
例如:
FeedListviewAdapter adapter=new FeedListviewAdapter(ctx,id,data);
FeedPostingLayout test = new FeedPostingLayout(post, currentTimePost);
adapter.add(test);
adapter.notifyDataSetChanged();
答案 1 :(得分:0)
只需尝试更换arraylist,就像
一样setPostingLayout(ArrayList<FeedPostingLayout> postingLayout) {
this.postingLayout = postingLayout;
notifyDataSetChanged();
}
原因是arraylist对数据进行了不同的副本更改,不会反映到postingLayout。