0

因此,我有兩個片段鏈接到顯示ListView的佈局文件。 ListView是在xml中定義的,並且具有來自字符串數組的條目。我想單擊ListView中的項目並打開新的活動。一個ListView中有8個項目,另一個是9個。在onItemClick代碼中,如何創建基於點擊項目來啓動活動的意圖?我將爲每個項目創建1個課程作爲自己的活動。我如何通過此代碼的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(){@ Override onItemClick(...){...}});''可以'工作。我雖然可以將事件註冊到「Listener」中。 – Stallman

+0

@Stallman通過編寫'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"); 
    } 


}