Когда вы используете operator [], std :: map ищет элемент с заданным ключом. Если он не найден, он создает его. Следовательно, проблема с const.
Используйте метод find, и все будет в порядке.
Можете ли вы отправить код о том, как вы пытаетесь использовать find ()? Правильный путь:
if (map.find (name)! = Map.end ()) {// ...}
Обычно вы видите те же элементы, что и прокрутка вниз по GridView
, потому что в методе getView
вы устанавливаете drawables для ImageView
только тогда, когда convertView
является null
(например, для первые элементы, которые видны, когда на экране появляются GridView
). Если convertView
не null
, то есть у вас есть переработанный вид строки, вы не устанавливаете правильное изображение, и вы остаетесь с изображением, которое ранее было установлено на этом переработанном представлении. Попробуйте изменить метод getView
следующим образом:
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
v = inflater.inflate(R.layout.gridview_item_layout, parent, false);
} else {
v = (View) convertView;
}
TextView text = (TextView)v.findViewById(R.id.grid_item_text);
text.setText(mTextIds[position]);
ImageView image = (ImageView)v.findViewById(R.id.grid_item_image);
image.setImageDrawable(mThumbIds[position]);
return v;
}
При нажатии элемента отображаются правильные элементы, потому что вы используете параметр position
для извлечения данных.
Это мой код для GridView с Button + Textview
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.grid_item, null);
} else {
holder = (ViewHolder) convertView.getTag();
}
TextView text = (TextView)convertView.findViewById(R.id.texto_grid);
text.setText(app_listaActiva_NOMBRES[position]);
Button image = (Button)convertView.findViewById(R.id.miniatura_grid);
image.setBackgroundResource(R.drawable.custom_button);
image.setOnClickListener(new MyOnClickListener2(position,app_listaActiva_SONIDOS));
return convertView;
}
Отправить и gridview или listview, а в конструкторе реализовать этот метод реализовать onscroll listener
this.mGridView = mGridView;
this.mGridView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
Log.v("onScrollStateChanged", "onScrollStateChanged");
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
isScrollStop = true;
notifyDataSetChanged();
} else {
isScrollStop = false;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
Log.v("onScroll", "onScroll");
}
});
Измените здесь и повторите попытку,
View v;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
v = inflater.inflate(R.layout.gridview_item_layout, null);
TextView text = (TextView)v.findViewById(R.id.grid_item_text);
text.setText(mTextIds[position]);
} else {
v = (View) convertView;
}
if(view!=null)
{
ImageView image = (ImageView)v.findViewById(R.id.grid_item_image);
image.setImageDrawable(mThumbIds[position]);
notifyDataSetChanged(); //Calling this helped to solve the problem.
}
return v;
}
GridView
лагги). Имейте в виду, что вы запрашиваете эти изображения, а также сохраняете их в памяти (я не знаю, сколько у вас есть). – Luksprog 28 June 2012 в 14:58