Android ListView可单击其他活动

Android ListView可单击其他活动,android,listview,android-listview,onitemclicklistener,Android,Listview,Android Listview,Onitemclicklistener,首先,我是android应用程序编程新手,所以我想你可以叫我noob。我什么都试过了。我在谷歌上搜索了100页。但我就是不知道怎么做 我的问题是,我无法将listview中的某个项目与另一个活动链接。我尝试了很多在线教程,但都没能成功。还因为我无法将MainActivity扩展到ListActivity 如果有人能告诉我如何做到这一点,或解释另一种选择,我将非常高兴 package com.******.*****; import java.io.FileNotFoundException;

首先,我是android应用程序编程新手,所以我想你可以叫我noob。我什么都试过了。我在谷歌上搜索了100页。但我就是不知道怎么做

我的问题是,我无法将listview中的某个项目与另一个活动链接。我尝试了很多在线教程,但都没能成功。还因为我无法将MainActivity扩展到ListActivity

如果有人能告诉我如何做到这一点,或解释另一种选择,我将非常高兴

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。

您停留在哪一部分?你的问题很模糊,我一直在做一个听众。这根本行不通。。我希望每个项目都转到其他活动您是否尝试使用我上面发布的代码?有多少是有效的;你到底被困在哪里?