一切正常,但现在我什么也没明白,我在listView中显示72个项目,它在第3个位置的第一个项目显示不正常,而其他项目从第一个位置重复出现再来一次?
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;
}
}
它只是重复您在下图中看到的列表的所有名称...
答案 0 :(得分:0)
如你所说
它在第3个位置的第一项显示不正常,而从第1项再次重复显示的其他项
您需要为每个项目绑定数据而没有任何条件,就像您仅在converconvertView == null
时绑定数据一样
所以只需删除
if(convertView==null)
条件并始终绑定数据而没有任何条件
答案 1 :(得分:0)
您的getView方法逻辑错误,重复项的出现是由于视图的重用引起的,请按照以下代码段更改您的getView方法。
@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);
convertView.setTag(myViewHolder);
}
else{
myViewHolder=(MyViewHolder)convertView.getTag();
}
InstructionsData instructionsData=iData.get(position);
myViewHolder.imageView.setImageResource(instructionsData.getImage_inst());
myViewHolder.textView1.setText(instructionsData.getInstructionslist());
//myViewHolder.textView2.setText(instructionsData.getInstructionslist());
return convertView;
}