Доброго времени суток. В процессе разработки столкнулись с проблемой: при формировании списка ListView и установки OnItemClickListener на них, последний срабатывает при однократном нажатии одновременно для нескольких элементов этого списка, при чем для разных ListView - по разному. Где-то для каждого четвертого, где-то для каждого пятого и т.п. Пробовали дебажить позиции и айди элементов - результат получали верный. Подскажите, в чем, собственно, заключается проблема? Код прилагаю.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shop_info_activity);
Intent intent = getIntent();
jsonObj = intent.getStringExtra("jsonObj");
buttonCall = (Button) findViewById(R.id.buttonCall);
buttonSite = (Button) findViewById(R.id.buttonSite);
buttonMap = (Button) findViewById(R.id.buttonMap);
list = (ListView) findViewById(R.id.list);
mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
HomeActivity.cust.applyTypeface(mainLayout, HomeActivity.cust.getTypeface(this));
try {
shops = new JSONObject(jsonObj);
posterImage = (SmartImageView) findViewById(R.id.posterImage);
posterImage.setImageUrl(POSTER_FOLDER+shops.getString(TAG_POSTER_FULL));
shopTitle = (TextView) findViewById(R.id.shopTitle);
shopTitle.setText(shops.getString(TAG_TITLE));
shopDesc = (TextView) findViewById(R.id.shopDesc);
shopDesc.setText(shops.getString(TAG_DESC_FULL));
shopArray = shops.getJSONArray(TAG_DICOUNTS);
for(int i = 0; i < shopArray.length(); i++) {
String name_disc = shopArray.getJSONObject(i).getString(TAG_NAME_DISC);
String desc_disc = shopArray.getJSONObject(i).getString(TAG_DESC_DISC);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_NAME_DISC, name_disc);
map.put(TAG_DESC_DISC, desc_disc);
oslist.add(map);
}
BaseAdapter adapter = new MySimpleAdapter(this, oslist,
R.layout.shop_disc_item,
new String[] {TAG_NAME_DISC, TAG_DESC_DISC}, new int[] {
R.id.discName, R.id.discInfo});
list.setAdapter(adapter);
list.setOnItemClickListener(this);
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
discInfo = (TextView) view.findViewById(R.id.discInfo);
arrow = (ImageView) view.findViewById(R.id.arrow);
nameLayout = (LinearLayout) view.findViewById(R.id.nameLayout);
switch (discInfo.getVisibility()){
case View.GONE:
discInfo.setVisibility(View.VISIBLE);
nameLayout.setBackgroundColor(getResources().getColor(R.color.strangeGreen));
break;
case View.VISIBLE:
discInfo.setVisibility(View.GONE);
nameLayout.setBackgroundColor(getResources().getColor(R.color.buttonGreen));
break;
}
}
class MySimpleAdapter extends SimpleAdapter {
public MySimpleAdapter(Context context,
List<? extends Map<String, ?» data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
}
@Override
public void setViewText(TextView v, String text) {
Typeface face = Typeface.createFromAsset(getAssets(), "fonts/PLUMCRG.ttf");
v.setTypeface(face);
v.setText(text);
}
}