TabHost中ListView的Click事件的问题



我有一个问题。我正在开发一个应用程序,使用抽屉布局参考这个例子https://developer.android.com/training/implementing-navigation/nav-drawer.html

横向菜单工作正常,但我的片段(内容)加载3选项卡,每个都有一个列表视图,我的问题是方法onItemClick (setOnItemClickListener)不起作用,即选择一个项目没有解决任何问题。还有什么想法?。谢谢。! !

PS:对不起,我的英语不好

PrincipalActivity.java

public class PrincipalActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private String[] mLeftPanel;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    initUI();
}
private void initUI(){
    mLeftPanel = getResources().getStringArray(R.array.menu_array);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.dwrMain);
    mDrawerList = (ListView) findViewById(R.id.leftPanel);
    ArrayList<DrawerOption> items = new ArrayList<DrawerOption>();
    items.add(new DrawerOption(R.drawable.ic_plan_visit,mLeftPanel[0]));
    items.add(new DrawerOption(R.drawable.ic_clients,mLeftPanel[1]));
    items.add(new DrawerOption(R.drawable.ic_search,mLeftPanel[2]));
    items.add(new DrawerOption(R.drawable.ic_sinchronize,mLeftPanel[3]));
    items.add(new DrawerOption(R.drawable.ic_configure,mLeftPanel[4]));
    items.add(new DrawerOption(R.drawable.ic_logout, mLeftPanel[5]));
    mDrawerLayout.setDrawerShadow(R.color.listViewBackground, GravityCompat.START);
    mDrawerList.setAdapter(new DrawerOptionAdapter(this, items));
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            if (position == 0) {
                fragmentPlanVisit(position);
                getSupportActionBar().setTitle(mLeftPanel[0]);
            } 
            ......
            mDrawerLayout.closeDrawers();
        }
    });
    ......
}    
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem menuItem){
    int id = menuItem.getItemId();
    if (id == android.R.id.home){
        if (mDrawerLayout.isDrawerOpen(mDrawerList)){
            mDrawerLayout.closeDrawers();
        }else{
            mDrawerLayout.openDrawer(mDrawerList);
        }
    }
    return super.onOptionsItemSelected(menuItem);
}
private void fragmentPlanVisit(int position){
    Fragment fragment = new PlanVisitActivity();
    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_fragment, fragment)
                .commit();
        mDrawerList.setItemChecked(position, true);
    }
}
}

activity_principal.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
  xmlns:android="http://schemas.android.com/apk/res/android"    
  android:id="@+id/dwrMain"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
<FrameLayout
    android:id="@+id/content_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/ContentBackground"/>
<ListView
    android:id="@+id/leftPanel"
    android:layout_width="250dp"
    android:layout_height="match_parent"
    android:choiceMode="singleChoice"
    android:layout_gravity="start"
    android:divider="@color/divideColorMenuDrawer"
    android:dividerHeight="1dp"
    android:background="@color/listViewBackground"
    android:layout_weight="1"/>
</android.support.v4.widget.DrawerLayout>

PlanVisitActivity.java

public class PlanVisitActivity extends Fragment {
private TabHost tabHost;
private ListView lstPlanVisitCurse;
private ListView lstPlanVisitDay;
private ListView lstPlanVisitFuture;
private ArrayList<PlanVisits> outLstPlanVisits = new ArrayList<PlanVisits>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_planvisit, container, false);
    lstPlanVisitCurse = (ListView)(view.findViewById(R.id.lstPlanVisit_Tab1));
    lstPlanVisitCurse.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Log.i("PlanVisitActivity", String.valueOf(i));
            .....
            .....
        }
    });
    ......
    tabHost = (TabHost)(view.findViewById(R.id.tabHost));
    tabHost.setup();
    TabHost.TabSpec spec = tabHost.newTabSpec(getResources().getString(R.string.tab1));
    spec.setIndicator(getResources().getString(R.string.tab1));
    spec.setContent(R.id.tab1);
    tabHost.addTab(spec);
    spec = tabHost.newTabSpec(getResources().getString(R.string.tab2));
    spec.setIndicator(getResources().getString(R.string.tab2));
    spec.setContent(R.id.tab2);
    tabHost.addTab(spec);
    spec = tabHost.newTabSpec(getResources().getString(R.string.tab3));
    spec.setIndicator(getResources().getString(R.string.tab3));
    spec.setContent(R.id.tab3);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(0);
    getListPlanVisit();
    return view;
}
private void getListPlanVisit() {
    tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
        @Override
        public void onTabChanged(String s) {
            int tab = tabHost.getCurrentTab();
            try {
                if (tab == 0) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitCurse, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                } else if (tab == 1) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitDay, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                } else if (tab == 2) {
                    final PlanVisitsTask tk = new PlanVisitsTask(getActivity().getWindow().getContext(), lstPlanVisitFuture, tab);
                    tk.execute();
                    outLstPlanVisits = (ArrayList<PlanVisits>) tk.get();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
    });
}
}

activity_planvisit.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@color/ContentBackground"
  android:focusable="false"
  android:focusableInTouchMode="false">
<TabHost
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tabHost"
    android:layout_gravity="center_horizontal">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"></TabWidget>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/lstPlanVisit_Tab1"
                    android:divider="@color/divideColorlistView"
                    android:dividerHeight="1dp"
                    android:background="@color/listViewBackground"
                    android:choiceMode="singleChoice"/>
            </LinearLayout>
            <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/lstPlanVisit_Tab2"
                    android:divider="@color/divideColorlistView"
                    android:dividerHeight="1dp"
                    android:background="@color/listViewBackground"
                    android:choiceMode="singleChoice" />
            </LinearLayout>
            <LinearLayout
                android:id="@+id/tab3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/lstPlanVisit_Tab3"
                    android:divider="@color/divideColorlistView"
                    android:dividerHeight="1dp"
                    android:background="@color/listViewBackground"
                    android:choiceMode="singleChoice" />
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>
</LinearLayout>

寻找答案,我发现这个链接onlisttitemclick不适合listview?

相关内容

  • 没有找到相关文章

最新更新