片段中ListView的setOnItemClickListener [英] setOnItemClickListener for ListView in a fragment

查看:96
本文介绍了片段中ListView的setOnItemClickListener的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在单击片段中的ListView项时遇到问题.我编写了代码,因此片段指向所有内容的布局文件,并且其中两个布局是ListViews,它们从strings.xml的字符串数组中的项目检索其条目.由于我编写代码的方式,在我的情况下,我找不到为每个ListView项实现setOnItemClickListener的方法.

I'm having problems clicking on ListView items in the fragments. I wrote the code so the fragments point to layout files for everything and inside the 2 of the layouts are ListViews, which retrieve their entries from items in a string array in the strings.xml. I could not find a way to implement a setOnItemClickListener for each ListView item in my case due to the way I wrote the code.

MainActivity.java

MainActivity.java

package com.example.test_app;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.Menu;

public class MainActivity extends FragmentActivity{
    ViewPager ViewPager = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPager= (ViewPager) findViewById(R.id.pager);
        FragmentManager fragmentManager=getSupportFragmentManager();
        ViewPager.setAdapter(new AdapterActivity(fragmentManager));
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }
}

AdapterActivity.java

AdapterActivity.java

package com.example.test_app;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AdapterActivity extends FragmentStatePagerAdapter{
    public AdapterActivity(FragmentManager fm){
        super(fm);
    }
    @Override
    public Fragment getItem(int i){
        Fragment fragment=null;
        if(i==0){
            fragment=new HomeFragment();
        }
        if(i==1){
            fragment=new CommunityFragment();
        }
        if(i==2){
            fragment=new ResourcesFragment();
        }
        return fragment;
    }

    @Override
    public int getCount(){
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position){
        if(position==0){
            return "Home Page";
        }
        if(position==1){
            return "Community";
        }
        if(position==2){
            return "Resources";
        }
        return null;
    }
}
class HomeFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.home_fragment, container, false);
    }
}
class CommunityFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.community_fragment, container, false);
    }
}
class ResourcesFragment extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.resources_fragment, container, false);
    }
}

然后在resources_fragment.xml布局中,有一个ListView

Then in the resources_fragment.xml layout, there is a ListView

<ListView
        android:id="@+id/resourcesListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/categories" >
</ListView>

它从strings.xml中获取条目

It grabs entries from strings.xml

<string-array name="categories">
        <item>Category 1</item>
        <item>Category 2</item>
        <item>Category 3</item>
        <item>Category 4</item>
        <item>Category 5</item>
        <item>Category 6</item>
        <item>Category 7</item>
        <item>Category 8</item>
</string-array>

我使用了此链接创建我的ListView ,但是setOnItemClickListener对我不起作用.我还能如何将每个列表视图项目与其他活动联系起来?

I used this link to create my ListView, but the setOnItemClickListener won't work for me. How else can I connect each listview item other activities?

推荐答案

在对布局进行小样化之后,在片段创建代码中添加ListView.SetOnItemClickListener的位置.使用findViewById查找您的ListView,然后添加您的setOnItemClick侦听器.

The place to add your ListView.SetOnItemClickListener is in your fragment creation code, after you inlfate the layouts. Use findViewById to find your ListView, and add your setOnItemClick listener.

class ResourcesFragment extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

        View view = inflater.inflate(R.layout.resources_fragment, container, false);
        ListView lv = (ListView) view.findViewById(R.id.mylistviewid);

        lv.setOnItemClickListener(new OnItemClickListener() {

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

                        String category = categories[position];
                        Class activityClass = lookupActivityClass_byName(category);
                        //You could lookup by position, but "name" is more general

                        Intent intent = new Intent(getActivity(), activityClass);
                        startActivity(intent);


            }
        });

        return view;

    }

这篇关于片段中ListView的setOnItemClickListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆