2015-04-21 57 views
0

我想在應用程序菜單中點擊一個新卡片「set」。目前,它重新打開同一套牌。我希望打開一個新的時間表,並在每次向後滑動時回到我的列表中。請幫我解決這個問題。Google Glass:新卡套裝oncklick

public class MainActivity extends Activity implements OnItemClickListener{ 

// Define tag for debugging 
private static final String TAG = "MyActivity"; 

//infocards 
private List<CardBuilder> iCards; 

// List of cards 
private List<Card> mCards; 

// ScrollView for holding cards 
private CardScrollView mCardScrollView; 

// Current card selected 
private int currentCard = -1; 

private List<StepsToCheck> mTaskList; 
private ExampleCardScrollAdapter mAdapter; 


private ExampleCardScrollAdapter adapter; 
private CardScrollView iCardScrollView; 
private ExampleCardScrollAdapter iAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    // Create the cards 
    createCards(); 

    // Instantiate and set 
    mCardScrollView = new CardScrollView(this); 
    adapter = new ExampleCardScrollAdapter(); 

    mCardScrollView.setAdapter(adapter); 
    mCardScrollView.setOnItemClickListener(this); 
    mCardScrollView.activate(); 

    // Set CardScrollView as content view 
    setContentView(mCardScrollView); 

} 

// Instantiate ToDoListManager and get list 
private void createCards() { 


    mCards = new ArrayList<Card>(); 
    CheckingStepManager listManager = new CheckingStepManager(); 

    mTaskList = listManager.getToDoList(); 

    Card card; 

    int sizeList = mTaskList.size(); 

    // For all the cards 
    for (int i = 0 ; i < sizeList; i++) { 

     card = new Card(this); 
     card.setText(mTaskList.get(i).getTask()); 

     // Set in the arrayList 
     mCards.add(card); 

    } 

} 

// Class to manage CardScrollView 
private class ExampleCardScrollAdapter extends CardScrollAdapter { 
    @Override 
    public int getPosition(Object item) { 
     return mCards.indexOf(item); 
    } 

    @Override 
    public int getCount() { 
     return mCards.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return mCards.get(position); 
    } 

    @Override 
    public int getViewTypeCount() { 
     return CardBuilder.getViewTypeCount(); 
    } 

    @Override 
    public int getItemViewType(int position){ 
     return mCards.get(position).getItemViewType(); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return mCards.get(position).getView(convertView, parent); 
    } 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Create options from "/res/menu/main.xml" 
    getMenuInflater().inflate(R.menu.main, menu); 

    return super.onCreateOptionsMenu(menu); 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 

    // Get id for detect what item was selected 
    int id = item.getItemId(); 

    switch (id) { 

     case R.id.settings_1 : // Do something for setting 1 
      // Remove currentCard 
      mTaskList.remove(currentCard); 
      mCards.remove(currentCard);  // Remove the current card selected from the list of Cards 
      adapter.notifyDataSetChanged(); // Notify the adapter that needs to update the data 
      break; 

這是我的菜單中的setting2不起作用。

 case R.id.settings_2 : 

      createInfoCards(); 

      iCardScrollView = new CardScrollView(this); 
      iAdapter = new ExampleCardScrollAdapter(); 
      iCardScrollView.setAdapter(iAdapter); 
      iCardScrollView.activate(); 
      setContentView(iCardScrollView); 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

private void createInfoCards() { 
    iCards = new ArrayList<CardBuilder>(); 

    iCards.add(new CardBuilder(this, CardBuilder.Layout.TITLE) 
      .addImage(R.drawable.image1) 
      .setText("Fuselage Map")); 

    iCards.add(new CardBuilder(this, CardBuilder.Layout.TEXT) 
      .setText(String.format(this.getResources().getString(R.string.app_name)))); 

} 




@Override 
public void onResume() 
{ 
    super.onResume(); 

    adapter.notifyDataSetChanged(); 
} 


@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, 
         long id) { 
    // TODO Auto-generated method stub 

    // Set current Card for menu option handle 
    currentCard = position; 

    openOptionsMenu(); 



} 

}

+0

究竟發生了什麼?你是否調試過,是否進入第二種情況,還是根本沒有進入?你的代碼在某處出現錯誤嗎? – NoSixties

+0

不,我沒有收到錯誤,它只是再次打開第一張「卡片組」,沒有菜單功能。但我想打開一個新的提到。你可以幫幫我嗎? –

+0

請嘗試調試它,讓你知道到底發生了什麼。如果案件甚至觸發。 要能夠在Google眼鏡上進行調試,您需要添加android.os.Debug.waitForDebugger();到你的代碼。大部分時間我都把它放在了onCreate上。當您完成調試時,一定要再次拿出它 – NoSixties

回答

0

從我個人理解,你想如果選擇選項#2有一組不同的卡。要做到這一點,同時還保留了以前的一套卡片,我建議你在切換案例#2中開始一項新的活動。

您將需要創建此新活動,並使用所需的卡片進行填充。當你在進行這項新活動時,在D-pad上向下滑動將關閉該活動並將您帶入第一個活動。