Aks*_*hay 1 android google-maps android-listview onclicklistener
我是Android编程的新手.我正在开发一个应用程序,当用户点击任何ListView项目时,它应该转到Google地图应用程序并在地图上显示该地址的图钉.但当我点击任何项目时没有任何反应.以下是我的展示活动.
public class DisplayActivity extends Activity implements OnItemClickListener{
ListView listView;
private String tag_name;
public List<NameAddress> nameAddressList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
listView = (ListView) findViewById(R.id.list);
Intent intent = getIntent();
if(intent!= null)
{
tag_name = intent.getStringExtra("DashItemName");
setTitle("List of " +tag_name+ " addresses");
}
nameAddressList = null;
try {
XMLDOMParserHandler parser = new XMLDOMParserHandler(tag_name);
nameAddressList = parser.parseXML(getAssets().open("data.xml"));
ArrayAdapter<NameAddress> adapter =
new ArrayAdapter<NameAddress>(this,R.layout.list_item, nameAddressList);
listView.setAdapter(adapter);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.display, menu);
return true;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
// Build the intent
String address = nameAddressList.get(position).toString();
address = "geo:0,0?q=" + address;
String query = URLEncoder.encode(address, "utf-8");
Uri location = Uri.parse(query);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location;
mapIntent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;
// Start an activity if it's safe
if (isIntentSafe) {
startActivity(mapIntent);
}
else
{
Toast.makeText(this, "Please install google maps app", Toast.LENGTH_LONG).show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请建议我解决这个问题的方法.
请建议我解决这个问题的方法.
它不适合您,因为您忘记将侦听器分配给ListView:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
listView = (ListView) findViewById(R.id.list);
listView.setOnItemClickListener(this);
...
}
Run Code Online (Sandbox Code Playgroud)
现在,它将适合你.
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |