У меня есть вид списка, который завышен от моего адаптера. Когда я нажимаю на одну из кнопок, я получаю неправильный элемент. Используется для работы o.k, пока я не добавил кнопку whatsApp
.list view щелчок получает неправильный элемент
Это мой адаптер:
public class shawarmaddapter extends ArrayAdapter<shawarma> {
String nname;
double lat,lon;
public shawarmaddapter(Context context, List<shawarma> resource) {
super(context,0, resource);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
....
if (convertView==null)
{
convertView= LayoutInflater.from(getContext()).inflate(R.layout.shawarmaddapter,parent,false);
}
....
waze= (ImageButton)convertView.findViewById(R.id.adapterWazeBTN);
whats = (ImageButton)convertView.findViewById(R.id.whats);
locName=name.getText().toString();
....
nname = sh1.getName();
name.setText(sh1.getName());
....
if (sh1.getParking()==1)
park.setChecked(true);
else
park.setChecked(false);
rate.setRating((float) sh1.getRank());
rate.setIsIndicator(true);
listener lis = new listener();
waze.setOnClickListener(lis);
whats.setOnClickListener(lis);
lat= sh1.getLat();
lon= sh1.getLon();
return convertView;
}
есть onClickListener добавил в код Thats должен проверить место, если кнопка Waze нажата или имя, если кнопка нажата WhatsApp. Это код
class listener implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.adapterWazeBTN:
Log.i("a7", "button clicked");
// Log.i("a7", lat+" lat, "+lon+" lon"+ "distance: "+ sh1.getDistance());
try
{
String url = "waze://?ll="+lat+","+lon+"&navigate=yes";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
shawarmaList.con. startActivity(intent);
}
catch (ActivityNotFoundException ex )
{
Intent intent =
new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.waze"));
shawarmaList.con.startActivity(intent);
}
catch (Exception ex)
{
Log.i("a7",ex.toString());
}
break;
case R.id.whats:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "do you want to Join me to "+nname+"?");
sendIntent.setType("text/plain");
try {
Toast.makeText(shawarmaList.con.getApplicationContext(),nname,Toast.LENGTH_SHORT).show();
shawarmaList.con.startActivity(sendIntent);
} catch (Exception e) {
Log.i("a7",e.getMessage());
}
break;
}
}
}
Как я могу изменить это, чтобы получить правильный пункт?
Вы не посылаете индекс вашего пункта для вашего слушателя. Как слушатель может узнать, какой индекс вы нажали? Также вам необходимо использовать шаблон ViewHolder на вашем адаптере для повышения производительности и других неполадок. –
как я могу отправить индекс? Как это работает, прежде чем я добавил кнопку whatsapp? Вы можете помочь с владельцем? –
Вам нужно научиться исследовать. Проверьте эти ссылки: https://developer.android.com/training/improving-layouts/smooth-scrolling.html и http://stackoverflow.com/questions/20541821/get-listview-item-position-on-button- нажмите –