简体   繁体   English

片段中的可单击ListView项

[英]Clickable ListView items in Fragment

So I created ListView in Fragment. 所以我在Fragment中创建了ListView。 Here's the code: 这是代码:

public class HomeFragment extends ListFragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
        //INFLATE THE FRAGMENT LAYOUT FILE
        ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.fragment_home, container, false);
        //CREATE DATASOURCE
        String[] datasource={"Potisak s klupe",
                "Potisak s klupe bučicama",
                "Potisak s kose klupe",
                "Potisak s kose klupe bučicama",
                "Potisak s kontrakose klupe",
                "Potisak s kontrakose klupe bučicama",
                "Potisak na spravi",
                "Razvlačenja na ravnoj klupi",
                "Razvlačenja na kosoj klupi",
                "Razvlačenja na kontrakosoj klupi",
                "Razvlačenja kablovima na klupi",
                "Propadanja",
                "Sklekovi",
                "Sklekovi s nogama na povišenom",
                "Crossover kablovima",
                "Razvlačenja na leptir mašini",
        };
        //CREATE ADAPTER
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.rowlayout_prsa, R.id.labelrowlayout_prsa_tekst, datasource);
        // BIND ADAPTER TO THE LISTFRAGMENT
        setListAdapter(adapter);
        //RETAIN LISTFRAGMENT INSTANCE ACROSS CONFIGURATION CHANGES
        setRetainInstance(true);
        return rootView;
    }
    // HANDLING ITEM CLICK
        public void onListItemClick(ListView l, View view, int position, long id){
            ViewGroup viewGroup = (ViewGroup)view;
            TextView txt = (TextView)viewGroup.findViewById(R.id.labelrowlayout_prsa_tekst);
        l.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent (getActivity(), PotisakSKlupe.class);
                startActivity(intent);
            }
        });


        }


}

But I can't get to another activity when first list item is clicked with intents. 但是当我用意图单击第一个列表项时,我无法进行其他活动。 Also tryed with several other methods found on Internet, but no luck. 还尝试了Internet上发现的其他几种方法,但是没有运气。 There's no much about fragment list views.. 片段列表视图没有什么..

What am I missing here? 我在这里想念什么?

try this i think u had not called this method in your code.please call and then try. 试试这个,我想你没有在你的code.please调用此方法,然后再尝试。

public void onListItemClick(ListView l, View view, int position, long id){
        ViewGroup viewGroup = (ViewGroup)view;
        TextView txt = (TextView)viewGroup.findViewById(R.id.labelrowlayout_prsa_tekst);
    l.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent (getActivity(), PotisakSKlupe.class);
            startActivity(intent);
        }
    });


    }

Hope it helps. 希望能帮助到你。

first override this method. 首先重写此方法。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

after the onCreateView, onActivityCreated method is called. 在onCreateView之后,将调用onActivityCreated方法。 so put your onListItemClick() inside onActivityCreated method. 因此请将您的onListItemClick()放在onActivityCreated方法中。 Now set the list item to be clickable. 现在将列表项设置为可单击。

listView.setClickable(true);

and then, 接着,

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            startActivity(new Intent(getActivity(), AddActivity.class));
        }
    });

This might help you. 这可能对您有帮助。 (Check the variable name that I used and yours.) (检查我使用的变量名和您使用的变量名。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM