【发布时间】:2016-11-13 08:22:54
【问题描述】:
我有一个从我的适配器膨胀的列表视图。
当我单击其中一个按钮时,我得到了错误的项目。
在我添加了whatsApp 按钮之前,它以前可以正常工作。
这是我的适配器:
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,如果按下 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按钮之前它是如何工作的?你能帮忙处理一下viewholder吗?