Java 因为我的arrayadapter,每第七项我就得到一个副本?
每第七次我在我的listview中得到一个重复的项目,它从Result nr 1开始,所以这是我的listview 项目1 项目2 项目3 项目4 项目5 项目6 项目7 项目1 项目2 项目3 项目4 我想这是因为我的arrayadapter,但我不知道故障出在哪里这是我的适配器:Java 因为我的arrayadapter,每第七项我就得到一个副本?,java,android,json,facebook,adapter,Java,Android,Json,Facebook,Adapter,每第七次我在我的listview中得到一个重复的项目,它从Result nr 1开始,所以这是我的listview 项目1 项目2 项目3 项目4 项目5 项目6 项目7 项目1 项目2 项目3 项目4 我想这是因为我的arrayadapter,但我不知道故障出在哪里这是我的适配器: import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class ListEventAdapter extends ArrayAdapter<EventDetails> {
public ListEventAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
// TODO Auto-generated constructor stub
}
private List<EventDetails> eItems;
public ListEventAdapter(Context context, int resource, List<EventDetails> eItems) {
super(context, resource, eItems);
this.eItems = eItems;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
TextView txtAttending_count = null;
TextView txtName = null;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.event_item, null);
txtAttending_count = (TextView) v.findViewById(R.id.attending_count);
txtName = (TextView) v.findViewById(R.id.name);
}
EventDetails p = eItems.get(position);
if (p != null) {
if (txtAttending_count != null) {
txtAttending_count.setText(""+p.getAttending_count());
}
if (txtName != null) {
txtName.setText(""+p.getName());
}
}
return v;
}
}
import java.util.List;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类ListEventAdapter扩展了ArrayAdapter{
公共ListEventAdapter(上下文,int textViewResourceId){
super(上下文,textViewResourceId);
//TODO自动生成的构造函数存根
}
私人名单;
公共ListEventAdapter(上下文、int资源、列表EITEM){
super(上下文、资源、eItems);
this.eItems=eItems;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
TextView txtu count=null;
TextView txtName=null;
如果(v==null){
拉平机vi;
vi=LayoutInflater.from(getContext());
v=vi.充气(R.布局.事件\项目,空);
txtAttenting_count=(TextView)v.findViewById(R.id.attenting_count);
txtName=(TextView)v.findviewbyd(R.id.name);
}
EventDetails p=eItems.get(位置);
如果(p!=null){
if(txtu计数!=null){
txtAttenting_count.setText(“+p.getAttenting_count());
}
if(txtName!=null){
setText(“+p.getName());
}
}
返回v;
}
}
这两条线应该在if之外。
现在,仅在创建新视图时才指定这些字段。如果您正在重新使用已从屏幕上滚出的视图(这可能是因为它“每7次”出现一次),
txtu count
和txtName
保持null
并且您从不使用新值更新它们,这意味着您可以再次看到原始视图。OMG谢谢!为什么我没想到这个。我想我需要一些睡眠。谢谢你!!不知道我没做这个问题似乎离题了,因为它太本地化了。这个答案对任何人都没有帮助。相信我,在我最终学会之前,你不会想知道我有多少次犯错
txtAttending_count = (TextView) v.findViewById(R.id.attending_count);
txtName = (TextView) v.findViewById(R.id.name);