Android ListView可单击其他活动
首先,我是android应用程序编程新手,所以我想你可以叫我noob。我什么都试过了。我在谷歌上搜索了100页。但我就是不知道怎么做 我的问题是,我无法将listview中的某个项目与另一个活动链接。我尝试了很多在线教程,但都没能成功。还因为我无法将MainActivity扩展到ListActivity 如果有人能告诉我如何做到这一点,或解释另一种选择,我将非常高兴Android ListView可单击其他活动,android,listview,android-listview,onitemclicklistener,Android,Listview,Android Listview,Onitemclicklistener,首先,我是android应用程序编程新手,所以我想你可以叫我noob。我什么都试过了。我在谷歌上搜索了100页。但我就是不知道怎么做 我的问题是,我无法将listview中的某个项目与另一个活动链接。我尝试了很多在线教程,但都没能成功。还因为我无法将MainActivity扩展到ListActivity 如果有人能告诉我如何做到这一点,或解释另一种选择,我将非常高兴 package com.******.*****; import java.io.FileNotFoundException;
package com.******.*****;
import java.io.FileNotFoundException;
import com.******.******.R;
import com.******.******.MainActivity;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
private SitesAdapter mAdapter;
private ListView sitesList;
private Button mRefresh1;
private String[] drawerListViewItems={"Coming Up","Featured","Just Released"};
private ListView drawerListView;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("StackSites", "OnCreate()");
setContentView(R.layout.activity_main);
mRefresh1 = (Button) findViewById(R.id.button1);
ActionBar ab = getActionBar();
setTitle("EDMBrain");
ab.setSubtitle("Coming up");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, drawerListViewItems);
final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
final ListView navList = (ListView) findViewById(R.id.left_drawer);
navList.setAdapter(adapter);
// App Icon
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
);
// Set actionBarDrawerToggle as the DrawerListener
drawerLayout.setDrawerListener(actionBarDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
// just styling option add shadow the right edge of the drawer
drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mRefresh1.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Log.i("StackSites", "starting download Task");
SitesDownloadTask download = new SitesDownloadTask();
download.execute();
}
});
//Get reference to our ListView
sitesList = (ListView)findViewById(R.id.sitesList);
//Set the click listener to launch the browser when a row is clicked.
sitesList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int pos,long id) {
String url = mAdapter.getItem(pos).getLink();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
/*
* If network is available download the xml from the Internet.
* If not then try to use the local file from last time.
*/
if(isNetworkAvailable()){
Log.i("StackSites", "starting download Task");
SitesDownloadTask download = new SitesDownloadTask();
download.execute();
}else{
mAdapter = new SitesAdapter(getApplicationContext(), -1, SitesXmlPullParser.getStackSitesFromFile(MainActivity.this));
sitesList.setAdapter(mAdapter);
}
}
private ListView getListView() {
// TODO Auto-generated method stub
return null;
}
//Helper method to determine if Internet connection is available.
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
/*
* AsyncTask that will download the xml file for us and store it locally.
* After the download is done we'll parse the local file.
*/
private class SitesDownloadTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... arg0) {
//Download the file
try {
Downloader.DownloadFromUrl("****", openFileOutput("StackSites.xml", Context.MODE_PRIVATE));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result){
//setup our Adapter and set it to the ListView.
mAdapter = new SitesAdapter(MainActivity.this, -1, SitesXmlPullParser.getStackSitesFromFile(MainActivity.this));
sitesList.setAdapter(mAdapter);
Log.i("StackSites", "adapter size = "+ mAdapter.getCount());
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
actionBarDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// call ActionBarDrawerToggle.onOptionsItemSelected(), if it returns true
// then it has handled the app icon touch event
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
ListView ID位于左抽屉中
如你所见,我希望3个列表项:即将发布、刚刚发布、与另一个活动链接。
有什么办法可以完成吗?我不清楚你到底想要什么。但是,要响应列表项单击,需要设置MClickListener。要链接到其他活动,请使用意图。以下是一个示例:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
((ListView) findViewById (R.id.list)).setOnItemClickListener (this);
}
public void onItemClick (AdapterView<?> parent, View view, int position, long id)
{
Intent intent = new Intent (this, ShowDetail.class);
intent.putExtra (...); // info you want to pass to the ShowDetail activity
startActivity (intent);
}
}
此外,您还需要在上面的示例中编写第二个活动ShowDetail。您停留在哪一部分?你的问题很模糊,我一直在做一个听众。这根本行不通。。我希望每个项目都转到其他活动您是否尝试使用我上面发布的代码?有多少是有效的;你到底被困在哪里?