我不知道为什么但是当我向listview添加项目时,我只得到最后一项。例如。如果我写苹果而不是梨我只得到梨而不是苹果和梨。 为什么呢?
CODE:
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("IDDD:"+iddd);
System.out.println("IDDD:"+video2.getPic());
//holder.lw.setA
String commento= (holder.tw.getText().toString());
// holder.lw.setAdapter(adapter);
ArrayList<String> arrayList= new ArrayList<String>();
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, arrayList);
arrayList.add(commento);
// next thing you have to do is check if your adapter has changed
holder.lw.setAdapter(adapter);
adapter.notifyDataSetChanged();
System.out.println("LISTVIEW:"+arrayList);
}
});
答案 0 :(得分:1)
您在每次点击期间都在创建新的列表和适配器,因此请在该功能之外移动声明和初始化
getView
之外声明它们(如果是Base或ArrayAdaoter)或createViewHolder
(RecyclerAdapter)constructor
答案 1 :(得分:1)
在每次点击中,您都会对新列表ArrayList<String> arrayList= new ArrayList<String>();
进行十分转换,并且它是错误的
你需要将它从侦听器中分离出来并在你的监听器中添加新项并使用adapter.notifyDataSetChanged();
答案 2 :(得分:0)
在这里使用视图持有者模式更好地使用listview的现有实例,而不是一直重新创建新实例。
答案 3 :(得分:0)
你不需要做任何特别的事情,在onClick中你需要获得对ArrayAdapter的引用并在其上调用方法add(T ...)。
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("IDDD:"+iddd);
System.out.println("IDDD:"+video2.getPic());
String commento= (holder.tw.getText().toString());
ArrayAdapter adapter = (ArrayAdapter) holder.lw.getAdapter();
adapter.add(commento);
}
});
甚至无需调用notifyDataSetChanged,因为add已在内部执行此操作。
答案 4 :(得分:-1)
如果你使用它,你可以解决你的问题
yourAdapter.(getCount()-1-position);
如果您想查看前面的最后一项
,请执行此操作 public yourPoJo getItem(int position) {
return super.getItem(getCount()-1-position);
}