How can i start a different activity on item click from a custom listview?

前端 未结 4 1284
不思量自难忘°
不思量自难忘° 2021-01-14 13:03

i followed numerous tuitorials like http://www.javacodegeeks.com/2013/09/android-listview-with-adapter-example.html Also followed the questions asked here How to make custom

相关标签:
4条回答
  • 2021-01-14 13:10
    public class Menu extends ListActivity {
        String classes[]={"startingPoint","TextPlay","TextPlayPerfectJavaCode","EXAMPLE2","example3","example4"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1,classes);
        setListAdapter(adapter);
    }
    
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String className=classes[position];
        Class ourClass=null;
        try{
            ourClass=Class.forName("travis.thenewboston.com.thenewboston."+className);
            Intent ourIntent = new Intent(getApplicationContext(), ourClass);//replacing Menu.this - getApplicationContext()
            startActivity(ourIntent);
        }
        catch (ClassNotFoundException e){
            e.printStackTrace();
        }
        finally {
            Toast.makeText(Menu.this, "Clicked at Position: "+Integer.toString(position), Toast.LENGTH_SHORT).show();
        }
    }
    

    }

    0 讨论(0)
  • 2021-01-14 13:18

    Your code is running fine. I made it without Customadapter. All you need is below.

    MainActivity.java

    public class MainActivity extends Activity {
    
    
        String[] web = {
                  "Notifications",
                  "School",
                  "What's Hot",
                  "Tell a friend",
                  "Hit us up",
                  "Settings",
                  "About & Help"
          };
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_mainlist);
    
          ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
          R.layout.activity_listview, web);
    
          ListView list = (ListView) findViewById(R.id.list);
          list.setAdapter(adapter);
    
          list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    switch(position){
                    case 0:  Intent newActivity = new Intent(MainActivity.this, School.class);     
                    startActivity(newActivity);
                    break;
    
    
                 }
    
                }
            @SuppressWarnings("unused")
            public void onClick(View v){ 
                };
            });
    
       }//end oncreate
    
    
    }//endactivity
    

    School.java

    public class School extends Activity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.school);
    
    
        Intent newActivity1=new Intent();
        setResult(RESULT_OK, newActivity1);
        //finish();
    }
    
    }
    

    activity_mainlist.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ListActivity" >
    
       <ListView
       android:id="@+id/list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >
       </ListView>
    
     </LinearLayout>
    

    activity_listview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--  Single List Item Design -->
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dip"
        android:textSize="16dip"
        android:textStyle="bold" >
    </TextView>
    

    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.zzztest2"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.zzztest2.School" android:label="@string/app_name"> </activity>
    </application>
    

    0 讨论(0)
  • 2021-01-14 13:22

    By doing this way you don't have to write all the switch case for activity.

    public class MainActivity extends Activity {
      ListView list;
      String[] web = {
              "Notifications",
              "School",
              "What's Hot",
              "Tell a friend",
              "Hit us up",
              "Settings",
              "About & Help"
      };
      String[] s1 = {
              "Notifications",
              "School",
              "Whats_hot",
              "Tellafriend",
              "Hitusup",
              "Settings",
              "AboutHelp"
      };
    
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CustomList adapter = new
        CustomList(MainActivity.this, web, imageId);
        list=(ListView)findViewById(R.id.list);
        list.setAdapter(adapter);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    String a=s1[position];
                    Class a1= null;
                    try {
                         a1 =    Class.forName("<Your Package name>."+a);
                    } catch (ClassNotFoundException e) {
                         e.printStackTrace();
                    }
                    startActivity(new Intent(MainActivity.this,a1));
    
                }
            @SuppressWarnings("unused")
            public void onClick(View v){ 
            };
         });
      }
    
    }
    

    Don't forget to put point '.' immediately after your package name.

    0 讨论(0)
  • 2021-01-14 13:32

    public class MainActivity extends Activity {
    	  ListView list;
    	  String[] web = {
    			  "Notifications",
    			  "School",
    			  "What's Hot",
    			  "Tell a friend",
    			  "Hit us up",
    			  "Settings",
    			  "About & Help"
    	  };
    @Override
    	  protected void onCreate(Bundle savedInstanceState) {
    	    super.onCreate(savedInstanceState);
    	    setContentView(R.layout.activity_main);
    	    CustomList adapter = new
    	        CustomList(MainActivity.this, web, imageId);
    	    list=(ListView)findViewById(R.id.list);
    	        list.setAdapter(adapter);
    	        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    	        	@Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
    	        		switch(position){
    	        		case 0:  Intent newActivity = new Intent(MainActivity.this, Notifications.class);     
    	                startActivity(newActivity);
    	                break;
    	       case 1:  Intent newActivity1 = new Intent(MainActivity.this, School.class);     
    	                startActivity(newActivity1);
    	                break;
    	       case 2:  Intent newActivity2 = new Intent(MainActivity.this, Whats_hot.class);     
    	                startActivity(newActivity2);
    	                break;
    	       case 3:  Intent newActivity3 = new Intent(MainActivity.this, Tellafriend.class);     
    	                startActivity(newActivity3);
    	                break;
    	       case 4:  Intent newActivity4 = new Intent(MainActivity.this, Hitusup.class);     
    	                startActivity(newActivity4);
    	                break;
    	       case 5:  Intent newActivity5 = new Intent(MainActivity.this, Settings.class);     
               startActivity(newActivity5);
               break;
      case 6:  Intent newActivity6 = new Intent(MainActivity.this, AboutHelp.class);     
               startActivity(newActivity6);
               break;
      
    	        	 }
    	        	
    	        	}
    	        @SuppressWarnings("unused")
    	        public void onClick(View v){ 
          };
        });}
    }

    0 讨论(0)
提交回复
热议问题