Good afternoon, ListView created with a counter for 100 lines. Element positions are not in order, but randomly and repeated. When the application is turned on, everything is displayed correctly, when scrolling begins chaos (random position values). How to fix the problem?
public class ListAdapter extends BaseAdapter { private Context mContext; private String[] mList; public ListAdapter(Context context,String[]list){ this.mContext = context; this.mList = list; } public static class ViewHolder { static TextView txtItem; static ProgressButton btnList; ImageView imageView; } @Override public View getView(int position, View convertView, ViewGroup viewGroup) { ViewHolder viewHolder; if (convertView == null){ LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.list_view_item, viewGroup, false); viewHolder = new ViewHolder(); ViewHolder.txtItem = (TextView) convertView.findViewById(R.id.tvListView); ViewHolder.btnList = (ProgressButton)convertView.findViewById(R.id.button1); viewHolder.imageView = (ImageView)convertView.findViewById(R.id.ivListItem); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } ViewHolder.txtItem.setText(getItem(position)); return convertView; } @Override public int getCount() { return mList.length; } @Override public String getItem(int i) { return mList[i]; } @Override public long getItemId(int i) { return i; } public class MainActivity extends AppCompatActivity { final String[] list = new String[100]; static float ratio; static int row; private static final String TAG = "myLog"; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initList(list); ListView listView = (ListView)findViewById(R.id.listView1); final ListAdapter adapter = new ListAdapter(this,list); if (listView != null) { listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("position", position); intent.putExtra("ratio",ratio); startActivity(intent); } }); } } public void initList(String[] list){ for(int i=0; i<list.length; i++){ list[i]=i+" "; } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } public void onSettingsMenuClick(MenuItem item) { Intent intent = new Intent(this,SettingsActivity.class); startActivityForResult(intent, 0); }