GridView меняет элементы - PullRequest
       34

GridView меняет элементы

0 голосов
/ 05 ноября 2018

Привет, друзья, у меня проблема. Когда я прокручиваю вниз в моем GridView и прокручиваю вверх, порядок элементов изменяется. Я хочу, чтобы все это осталось на одном месте. Ниже вы можете найти мой код. Было бы хорошо, если бы кто-нибудь мне помог, так как это очень раздражающая ошибка.

public class GridAdapter extends BaseAdapter {

    Context context;
    private final String [] data;
    View view;
    LayoutInflater layoutInflater;
    int[] i = {
        R.drawable.blue,
        R.drawable.green,
        R.drawable.yellow,
    };

    public GridAdapter(Context context, String[] data) {
        this.context = context;
        this.data = data;
    }

    @Override
    public int getCount() {
        return data.length;
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if(convertView==null){
            layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = new View(context);
            view = layoutInflater.inflate(R.layout.single_item,null);

            ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
            TextView textView = (TextView) view.findViewById(R.id.textView);
            Random rand = new Random();
            int  n = rand.nextInt(i.length);
            imageView.setImageResource(i[n]);
            textView.setText(data[position]);
        }else{
           view = (View)convertView;
        }

        return view;
    } }

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Это сработало для меня после добавления этих двух строк:

@ Override

public int getViewTypeCount() {

    return getCount();
}

@Override
public int getItemViewType(int position) {

    return position;
}
0 голосов
/ 05 ноября 2018
to faster the performance use ViewHolder like below
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null) {
        final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
        convertView = layoutInflater.inflate(R.layout.single_item, null);  
        final ImageView imageView = (ImageView)convertView.findViewById(R.id.imageView);
        final TextView textView = (TextView)convertView.findViewById(R.id.textView);
        final ViewHolder viewHolder = new ViewHolder(imageView, textView);
        convertView.setTag(viewHolder);
    }
    Random rand = new Random();
    int  n = rand.nextInt(i.length);
    final ViewHolder viewHolder = (ViewHolder)convertView.getTag();
    viewHolder.imageView.setImageResource(i[n]);
    viewHolder.textView.setText(data[position]);
    return convertView;
} 
 private class ViewHolder {
    private final TextView imageView;
    private final TextView textView;
    public ViewHolder(TextView imageView, TextView textView) {
      this.imageView = imageView;
      this.textView = textView;
    }
  }
...