0

그래서 두 개의 조각이 ListView를 표시하는 레이아웃 파일에 연결됩니다. ListView는 xml에 정의되어 있으며 문자열 배열의 항목이 있습니다. ListView에서 항목을 클릭하고 새 활동을 열려고합니다. ListView에는 8 개의 항목이 있고 다른 항목에는 9 개의 항목이 있습니다. onItemClick 코드에서 클릭 한 항목을 기반으로 활동을 시작하기위한 의도를 작성하려면 어떻게해야합니까? 나는 하나의 항목을 자신의 활동으로 생성 할 것이다. 이 코드의 onItemClick 메소드 내부의 인 텐트를 통해 클래스에서 활동을 시작하려면 어떻게해야합니까?ListView의 onItemClick에서 액티비티를 시작하여 조각으로

class CommunityFragment extends Fragment{ 

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

     View view = inflater.inflate(R.layout.community_fragment, container, false); 
     ListView lv = (ListView) view.findViewById(R.id.communityListView); 
     lv.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){ 
       // TODO Auto-generated method stub 

      } 
     }); 
     return view; 
    } 
} 
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.resourcesListView); 

     lv.setOnItemClickListener(new OnItemClickListener() { 

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

      } 
     }); 
     return view; 
    } 
} 
+1

http://stackoverflow.com/questions/7177633/how-to-call-startactivity-or-call-intent-from-onitemclick-event-of-listview-in-f를 확인 .. – rajshree

답변

1

만들기 switch 문을 시작할 수 있습니다 위치에 따라 위치를 얻을 것이다 클릭 이에 따라 아래와 같이됩니다 :

lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      // TODO Auto-generated method stub 
        int itm=arg0.getItemAtPosition(arg2); 
       switch (itm) { 
       case 0: 
       Toast.makeText(m_context, "Position Zero", Toast.LENGTH_SHORT).show(); 
           Intent intent = new Intent(getActivity(), FirstActivity.class); 
       startActivity(intent); 
        break; 
       case 1: 
        Intent intent1 = new Intent(getActivity(), SecondActivity.class); 
        startActivity(intent1); 
           break; 
       case 2: 
          //.............................. 

     } 
    }); 
+0

@GrlsHu 다음 명령어의 순서가 잘못되었습니다 : 'lv.setOnItemClickListener (null);' 'lv.setOnItemClickListener (new OnItemClickListerner() {@ OverItem onItemClick (...)}) 일하지 마라. 나는 이벤트를 '리스너'에 등록 할 수 있지만. – Stallman

+0

@Stallman ListView를 리스너에 등록하지 않았다는 것을 나타내는'lv.setOnItemClickListener (null);'을 쓰면됩니다. 따라서 먼저 리스너를 구현해야하며이를 적용하여 볼 수 있습니다. null 값을 전달할 수 없습니다. – GrIsHu

+0

고마워, 알아. – Stallman

2

구현하여 각 항목을 클릭하고 열기 활동을 OnItemClickListener() 항목에

listview.setOnItemClickListener(new OnItemClickListener() { 

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

        Intent intent = new Intent(getActivity(), nextactivity.class); 
        startActivity(intent); 

     } 
    }); 
1

아래와 같이하면 당신이 조각을

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    Toast.makeText(getApplicationContext(), 
     "Click ListItem Number " + position, Toast.LENGTH_LONG) 
     .show(); 
     switch(position) { 
     case CONST_FRAGMENT_1 : 
        //Start fragment 1 
      ... 
      ... 
     } 
    } 
}); 
0

한 일반 솔루션이 될 수 있습니다 ..

Class[] activityArray = new Class[numberOfItemsInListView]; 
      activityArray[0] = Activity1.class; 

//

그런 모든 활동을 추가 ... 당신 같은 ... 을 열고 자하는 활동의 클래스 이름을 보유 항목의 배열을 만듭니다. ............. ListView에 onItemCLick에 지금

:

lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, 
       int position, long arg3) { 


        Intent intent = new Intent(CommunityFragment.this.getActivity(), activityArray[postion]); 
        CommunityFragment.this.getActivity.startActivity(intent); 

     } 
    }); 
0

사용이 당신의 onIte 옆 의도를 시작합니다 mClickListener :

Intent intent = new Intent(getActivity(), nextactivity.class); 
        startActivity(intent); 
0

다음 코드가 도움이된다고 생각합니다.

public class PdfListViewFragment extends Fragment { 
    ListView listView; 
    Activity rootView; 
    Activity context; 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     //returning our layout file 
     //change R.layout.yourlayoutfilename for each of your fragments 
     View rootView = inflater.inflate(R.layout.pdf_list_view, container, false); 
     context = getActivity(); 
     // Get ListView object from xml 
     listView = (ListView) rootView.findViewById(R.id.list); 

     // Defined Array values to show in ListView 
     String[] values = new String[]{"Android List View", 
       "Adapter implementation", 
       "Simple List View In Android", 
       "Create List View Android", 
       "Android Example", 
       "List View Source Code", 
       "List View Array Adapter", 
       "Android Example List View" 
     }; 

     // Define a new Adapter 
     // First parameter - Context 
     // Second parameter - Layout for the row 
     // Third parameter - ID of the TextView to which the data is written 
     // Forth - the Array of data 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, 
       android.R.layout.simple_list_item_1, android.R.id.text1, values); 


     // Assign adapter to ListView 
     listView.setAdapter(adapter); 

     // ListView Item Click Listener 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       if (position == 0) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity1.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 1) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity2.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 2) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity1.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 3) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity2.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 4) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity1.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 5) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity2.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 6) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity1.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 7) { 
        Intent myIntent = new Intent(view.getContext(), ListItemActivity2.class); 
        startActivityForResult(myIntent, 0); 
       } 


       // ListView Clicked item index 
       int itemPosition = position; 

       // ListView Clicked item value 
       String itemValue = (String) listView.getItemAtPosition(position); 

       // Show Alert 

       Toast.makeText(context.getApplicationContext(), "Position :" + itemPosition + " ListItem : " + itemValue, Toast.LENGTH_LONG).show(); 

      } 

     }); 

     return rootView; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     //you can set the title for your toolbar here for different fragments different titles 
     getActivity().setTitle("XYZ"); 
    } 


} 
관련 문제