2012-11-22 73 views
-1

我正在使用android應用程序。在那裏,首先我需要存儲來自webservice的所有數據,然後從數據庫中查詢數據並在listview中進行更新。從列表視圖開始子項活動按鈕在android中單擊

我的列表視圖項目包含複選框和按鈕。當我點擊按鈕或複選框時,它正在工作(顯示LOG)正常,但我需要在列表視圖中單擊按鈕時啓動子活動。

這是我的Adapter類,

public class GuestListAdapter extends BaseAdapter{ 
    Context context; 
    ArrayList<String > arrayListFirstValue; 
    ArrayList<String > arrayListSecondValue; 
    ArrayList<String > arrayListThirdValue; 
    public GuestListAdapter(Context mcontext, ArrayList<String> arrListFV,ArrayList<String> arrListSV,ArrayList<String> arrListGuestTV) 
    { 
     arrayListFirstValue =arrListFV; 
     arrayListSecondValue =arrLisSV; 
     arrayListThirdValue =arrListTV; 
     context = mcontext; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return arrayListFirstValue.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return arrayListFirstValue.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     if (view == null) { 
       LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
       view = inflater.inflate(R.layout.guest_list_item, parent, false); 
      } 



     TextView txtFirstValue = (TextView)view.findViewById(R.id.txt_firstname); 
      txtFirstValue .setText(arrayListFirstValue.get(position)); 
     TextView txtSecondValue = (TextView)view.findViewById(R.id.txt_lastname); 
     txtSecondValue .setText(arrayListSecondValue.get(position)); 
     TextView txtThirdValue = (TextView)view.findViewById(R.id.txt_guest_count); 
     txtThirdValue .setText(arrayListThirdValue.get(position)); 
     Button btnInfo = (Button)view.findViewById(R.id.btn_info); 

     CheckBox checkBoxCheckins = (CheckBox)view.findViewById(R.id.checkBoxIsCheckedIn); 


     btnInfo.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       System.out.println("Adap button **********"); 

      } 
     }); 
     checkBoxCheckins.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       System.out.println("Adap checked **********"); 

      } 
     }); 

     return view; 
    } 


} 

最後我的問題是我需要啓動子活性,當我點擊列表視圖按鈕。 請告訴我如何做到這一點。

回答

0

你有中庸之道使用傳遞給適配器這樣的活動的上下文啓動一個新的活動:

Intent intent = new Intent(context,Activity.class); 
startActivity(intent); 
0

這很簡單。只需將您當前的聽衆更改爲:

編輯:因爲您不首先在選項卡的子活動中告知該列表視圖。

btnInfo.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        Intent intent = new Intent(context, YourNewTabActivity.class);// Your tab parent activity. 
intent.putExtra(Constants.TAB_INDEX, tab index number) // pass the index of the tab you want to move to. 

    startActivity(intent); 

       } 
      }); 

在您的標籤活動(父活動),您可以創建一個變量來存儲你的願望標籤

private int tabindex = 0; 

檢查該指數在onCreate

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 



      setContentView(R.layout.main_tab_screen); 
      tabHost = (TabHost) findViewById(android.R.id.tabhost); 
      tabWidget = getTabWidget(); 


      if (getIntent().getExtras() != null) { 
       tabindex = getIntent().getExtras().getInt(Constants.TAB_INDEX, 
         0); // you check if this parent started from other activity. You child activity will pass the desire tab index here. If nothing is special, just display the 1st tab. 
          } 
      initTab(); 
     } 
    } 



    protected void initTab() { 
     Intent intent; 
     TabHost.TabSpec spec; 
     // Add tab child 
     spec = tabHost.newTabSpec("Inbox").setIndicator(
       getTabIndicatorView(MainTabActivity.this, "Hộp thư", 
         R.drawable.tin_nhan_tab_selector)); 
     intent = new Intent(this, com.vtcmobile.ui.InboxActivity.class); 
     // intent.putExtra(Constants.INTENT_IS_LOAD, isload); 
     spec.setContent(intent); 
     tabHost.addTab(spec); 
.... 

     tabHost.setCurrentTab(tabindex); // use the tab index to get the right tab you want. 
     tabHost.getTabWidget().focusCurrentTab(tabindex); 

    } 
+0

該項目工程和打印日誌但問題是我無法啓動子活動,記住一件事,我在自定義適配器類(Base適配器)中用out擴展活動,我無法啓動活動或啓動子活動不工作G。有沒有什麼辦法可以在自定義適配器類或任何解決方案中啓動兒童活動。 – Dhamodharan

+0

我看到您的適配器構造函數具有上下文。您只需在'onClick'中傳遞該上下文。 –

+0

首先感謝您的回覆,但我想在這裏告訴您一件事,那就是我在標籤欄中顯示列表視圖。當我點擊列表項中的按鈕時,需要在標籤欄中將我帶到另一個活動。所以我需要開始兒童活動。不是一個正常的意圖。請指導我。 – Dhamodharan

相關問題