2013-10-18 55 views
0

我在代碼的某些部分遇到問題,但似乎無法解決問題。當我點擊Shop1時,ListView中出現了三個項目,分別是Location,Contact和Appointment。我想知道如何在選擇其中一種時參與不同的活動。例如,如果我想單擊位置,我希望它將我帶到不同的佈局文件。幫助會很棒!滑出式菜單ListView問題

這裏有一些照片:

Not Clicked

未點擊

enter image description here

點擊了

enter image description here

點擊位置去DIF ferent活動

下面是代碼:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.Toast; 


public class MainActivity extends Activity 
{ 
private ListView list; 
private ArrayAdapter<String> adapter; 
private RibbonMenuView rbmView; 
private Button test; 
private ListView rbmListView, rbmListView2; 
private ArrayAdapter<String> adapt, adapter2; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    /** Init our views **/ 
    rbmView = (RibbonMenuView) findViewById(R.id.ribbonMenuView1); 
    list = (ListView) findViewById(R.id.listView1); 

    /** Calls "hideMenu()" after each click similiar to the Facebook or Google+ application **/ 
    test = (Button) findViewById(R.id.button); 
    test.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      // shows how to hide the menu 
      if (rbmView != null) 
      { 
       rbmView.hideMenu(); 
      } 
     } 
    }); 

    /** This is the most important ListView, updating the main list in the Activity **/ 
    final String[] items_list = { "Shop1", "Shop2", "Shop3" }; 
    adapt = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items_list); 
    rbmListView = (ListView) findViewById(R.id.rbm_listview); 
    if (rbmListView != null) 
    { 
     rbmListView.setOnItemClickListener(new OnItemClickListener() 
     { 
      /* 
      * (non-Javadoc) 
      * @see android.widget.AdapterView.OnItemClickListener#onItemClick(android.widget.AdapterView, android.view.View, int, long) 
      */ 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
      { 
       switch (position) 
       { 
       case 0: 
        String[] items = { "Location", "Contact", "Appointment" }; 
        adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items); 
        break; 

       case 1: 
        String[] items1 = { "Location", "Contact", "Appointment" }; 
        adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items1); 
        break; 

       case 2: 
        String[] items2 = { "Location", "Contact", "Appointment" }; 
        adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items2); 
        break; 


       default: 
        String[] itemsd = { "A", "B", "C", "D" }; 
        adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, itemsd); 
        break; 
       } 

       // always update these 
       if (list != null) 
       { 
        list.setAdapter(adapter); 
        list.setClickable(true); 
        list.setOnItemClickListener(new OnItemClickListener() { 
         @Override 
         public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
          switch ((int)l) 
          { 
           case 0: // Location 
            //Intent intent = new Intent(getApplicationContext(), NEW_ACTIVITY.class); 
            //startActivity(intent); 
            break; 
           case 1: // Contact 
            //Intent intent = new Intent(getApplicationContext(), NEW_ACTIVITY.class); 
            //startActivity(intent); 
            break; 
           case 2: // Appointment 
            //Intent intent = new Intent(getApplicationContext(), NEW_ACTIVITY.class); 
            //startActivity(intent); 
            break; 
          } 
         } 
        }); 
       } 

       if (rbmView != null) 
       { 
        rbmView.hideMenu(); 
       } 
      } 
     }); 
     rbmListView.setAdapter(adapt); 
    } 

    /** This is the second ListView on the menu **/ 
    final String[] items_list2 = { "About", "Deals", "Contact Developer", }; 
    adapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items_list2); 
    rbmListView2 = (ListView) findViewById(R.id.rbm_listview2); 
    if (rbmListView2 != null) 
    { 
     rbmListView2.setOnItemClickListener(new OnItemClickListener() 
     { 
      /* 
      * (non-Javadoc) 
      * @see android.widget.AdapterView.OnItemClickListener#onItemClick(android.widget.AdapterView, android.view.View, int, long) 
      */ 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
      { 
       switch (position) 
       { 
        case 0: 
         startActivity(new Intent(MainActivity.this, About.class)); 
         break; 

        case 1: 
         startActivity(new Intent(MainActivity.this, DealsCode.class)); 
         break; 

        case 2: 
         startActivity(new Intent(MainActivity.this, ContactDev.class)); 
         break; 
       } 
       /*Toast.makeText(MainActivity.this, items_list2[position], Toast.LENGTH_SHORT).show(); 
       if (rbmView != null)*/ 
       { 
        rbmView.hideMenu(); 
       } 
      } 
     }); 
     rbmListView2.setAdapter(adapter2); 
    } 
} 

/** Allows users, even API < 5, to use the back button **/ 
/* 
* (non-Javadoc) 
* @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) 
*/ 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    switch (keyCode) 
    { 
    case KeyEvent.KEYCODE_BACK: 
     // if view is showing, close it 
     // all other back button clicks are handled by the phone 
     if (rbmView != null) 
     { 
      if (rbmView.isMenuShowing()) 
      { 
       new Handler().postDelayed(new Runnable() 
       { 
        public void run() 
        { 
         rbmView.hideMenu(); 
        } 
       }, 50); 
      } 
      else 
      { 
       return super.onKeyDown(keyCode, event); 
      } 
     } 
     break; 
    default: 
     return super.onKeyDown(keyCode, event); 

    } 

    return true; 
} 

/* 
* (non-Javadoc) 
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) 
*/ 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.menu, menu); 
    return true; 
} 

/* 
* (non-Javadoc) 
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) 
*/ 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case R.id.test: 
     // toggle our menu 
     if (rbmView != null) 
     { 
      rbmView.toggleMenu(); 
     } 
     break; 

    default: 
     return super.onOptionsItemSelected(item); 

    } 

    return true; 
} 
} 

如果需要其他任何東西,請讓我知道!

回答

1

使用startActivity(new Intent(getBaseContext(), activityToStart.class));

你爲什麼鑄造浮動這是一個ID,爲int試試?你應該只使用這個位置的int值。

 list.setOnItemClickListener(new OnItemClickListener() { 
         @Override 
         public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
          switch (i) 
          { 
           case 0: // Location 
startActivity(new Intent(getBaseContext(), LocationActivity.class)); 

            break; 
           case 1: // Contact 
;startActivity(new Intent(getBaseContext(), ContactActivity.class)); 

            break; 
           case 2: // Appointment 
startActivity(new Intent(getBaseContext(), AppointmentActivity.class)); 

            break; 
          } 
         } 
        }); 

如果您知道單擊項目的「行ID」,則它們是使用浮點值的方法。

+0

我試過了程序的代碼,但是當我點擊位置,聯繫人或約會時,它崩潰了。 – Kodi

+0

發佈清單和logcat錯誤。 – horvste

+0

所以我今天早上再次運行它,顯然它運行得很好......不知道它是Android Studio問題還是其他問題。但是,當我點擊不同的商店時,是否有辦法查看不同的事物?我對Android有點新,所以任何可以幫助我的信息都會很棒 – Kodi