android - 在 ListView 中重复项目?它不能正常工作,第一项显示在第三个位置,并再次从第一项重复
问题描述
一切正常,但现在我不知道发生了什么,我有 72 个项目要显示在 listView 中,第一个项目显示在第三个位置和其他项目不能正常工作,它再次从第一个项目重复?
package com.example.kishorsinh.yogaapp.Adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.kishorsinh.yogaapp.Model.InstructionsData;
import com.example.kishorsinh.yogaapp.R;
import java.util.List;
public class InstructionsAdapter extends BaseAdapter {
Context applicationContext;
List<InstructionsData> iData;
public InstructionsAdapter(Context applicationContext, List<InstructionsData> iData) {
this.applicationContext=applicationContext;
this.iData=iData;
}
@Override
public int getCount() {
return iData.size();
}
@Override
public Object getItem(int position) {
return iData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder myViewHolder;
if(convertView==null)
{
LayoutInflater layoutInflater=(LayoutInflater) applicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(R.layout.instructions_list,parent,false);
myViewHolder=new MyViewHolder();
myViewHolder.imageView=(ImageView) convertView.findViewById(R.id.inst_image);
myViewHolder.textView1=(TextView) convertView.findViewById(R.id.inst_name);
//myViewHolder.textView2=(TextView) convertView.findViewById(R.id.detail_inst);
InstructionsData instructionsData=iData.get(position);
myViewHolder.imageView.setImageResource(instructionsData.getImage_inst());
myViewHolder.textView1.setText(instructionsData.getInstructionslist());
//myViewHolder.textView2.setText(instructionsData.getInstructionslist());
convertView.setTag(myViewHolder);
}
else
{
myViewHolder=(MyViewHolder)convertView.getTag();
}
return convertView;
}
private class MyViewHolder
{
ImageView imageView;
TextView textView1;
//TextView textView2;
}
}
它只是重复您可以在下图中看到的所有列表名称...
解决方案
正如你所说
它不能正常工作,第一项显示在第 3 个位置,其他项目再次从第一项重复
您需要在没有任何条件的情况下为每个项目绑定数据,就像您仅在以下情况下绑定数据一样converconvertView == null
所以只要删除这个
if(convertView==null)
条件并始终无条件绑定数据
推荐阅读
- javascript - 为什么两次应用相同的数据会破坏图表?
- django - 如何正确更改 Django FileField.upload_to 属性?
- java - Java使用字节数组列表创建nativequery
- ruby-on-rails - 在 Ruby on Rails 中使用 wicked_pdf gem 时如何删除书签?
- mysql - 我的存储过程语法有什么问题?
- node.js - 有没有一种方法可以根据客户、网络爬虫和网络应用客户端来呈现不同的页面?
- ruby-on-rails - Bundler 从 Windows 运行,在 docker 映像中失败:Bundler 找不到 gem "nokogiri" 的兼容版本
- c# - 排序列表并根据顺序选择对象
- android - 使用 ImageView 淡入动画
- angular - Angular Material - Directly passing an object to a FormControl