2017-07-14 121 views
0

你好我該如何選擇列表中的特定數據?如何在android中選擇列表中的特定數據?

我有這個名單

List

例如我在凱撒(這不是第一次,也不在列表的最後) 點擊我設置的片段

name.setText(obj.getName()); 

但出現的是Mogul(這是名單上的最後一個) Mogul

那麼我該如何選擇名稱呢?有任何想法嗎?

編輯:

這裏的每一個列表中的片段和適配器

public class LivestockDetailFragment extends Fragment { 

    private Livestock livestock; 
    private View view; 
    private ImageButton pencil; 
    private EditText name; 
    private ImageButton save; 

    public static LivestockDetailFragment newInstance(Livestock livestock) { 
     LivestockDetailFragment fragment = new LivestockDetailFragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putSerializable(DVBoerConstants.DV_LIVESTOCK_EXTRA, livestock); 
     fragment.setArguments(bundle); 
     return fragment; 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     //Inflate the layout for this fragment_packages 
     view = inflater.inflate(R.layout.fragment_livestock_detail, container, false); 
     livestock = (Livestock) getArguments().getSerializable(DVBoerConstants.DV_LIVESTOCK_EXTRA); 

     //initLivestockDetailsView(view); 
     initializeEdit(); 



     ViewPager pager = (ViewPager) view.findViewById(R.id.viewPager); 
     pager.setAdapter(new MyPagerAdapter(getActivity().getSupportFragmentManager())); 

     name.setText(livestock.getName()); 

     return view; 

    } 



    private class MyPagerAdapter extends FragmentPagerAdapter { 

     public MyPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int pos) { 
      switch(pos) { 

       case 0: return LivestockDetailPageFragment.newInstance(livestock); 
       case 1: return LivestockMedicalHistoryPageFragment.newInstance(livestock); 
       case 2: return LivestockGalleryPageFragment.newInstance(livestock); 
       default: return LivestockDetailPageFragment.newInstance(livestock); 
      } 
     } 

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

     private String tabtitles[] = new String[]{"Details", "Medical History", "Gallery"}; 
     Context context; 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return tabtitles[position]; 
     } 
    } 







     /*RecyclerView recyclerView = (RecyclerView)view.findViewById(R.id.livestock_detail_recycler_view); 
     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(),1); 
     recyclerView.setLayoutManager(layoutManager); 
     LivestockDetailAdapter adapter = new LivestockDetailAdapter(getActivity(), livestock); 
     recyclerView.setAdapter(adapter);*/ 


    private void initializeEdit(){ 
     pencil = (ImageButton) view.findViewById(R.id.editName); 
     name = (EditText) view.findViewById(R.id.nameTextView); 

     save = (ImageButton) view.findViewById(R.id.saveName); 
     save.setOnClickListener(buttonList); 
     pencil.setOnClickListener(buttonList); 

    } 

    private View.OnClickListener buttonList = new View.OnClickListener(){ 
     public void onClick(View view) { 
      switch (view.getId()){ 
       case R.id.editName: 

        save.setVisibility(View.VISIBLE); 
        name.setFocusableInTouchMode(true); 
        KeyboardUtility.openKeyboard(getActivity()); 
        pencil.setVisibility(View.INVISIBLE); 
        break; 
       case R.id.saveName: 
        pencil.setVisibility(View.VISIBLE); 
        name.setFocusableInTouchMode(false); 
        name.setFocusable(false); 
        save.setVisibility(View.INVISIBLE); 
        KeyboardCloseUtility.hideKeyboard(getActivity()); 

        break; 
      } 

     } 
    }; 




} 
+0

發佈您的代碼如何處理列表項單擊偵聽器? –

+0

如何在片段中獲取obj對象?請發佈您的適配器和片段代碼 – Valentun

+0

您是否獲得最後一個值,即每個項目點擊時的大人物? –

回答

0

,有一個指標,你可以從索引列表讓你的特定項目。在你的情況下,你也可以從該列表中獲得該職位。

+1

如果你發佈你的代碼,這將是更好 –

+0

好吧ima編輯我的帖子 –

+0

嘗試閱讀此https://stackoverflow.com/questions/15661895/viewpager-and-fragment-onclicklistener-not-working-right我認爲它可以解決你的問題。 –

0

根據你的評論我猜你不是每次都創建新的對象..如果你正在循環數組把對象生成代碼放在循環內。如果那是不是這樣我不能幫助不看代碼

0

看着你的問題,可以有兩個問題,我可以看到:

  1. 你沒有初始化之前您的每一次obj將其添加到列表中。

    Example: List<Object> lst= new ArrayList<Object>(); Object obj = new Object(); obj.setParam(); list.add(); obj.setparam(); list.add();

    在這個例子中每前setParam()必須obj = new Object(); 否則每一次你將同樣Param設置了所有obj和 這param會比最後一個莫屬。因此,每個list.add(); 都會將相同的object添加到list

  2. 您添加objloop在你所設置的參數 (所有的名字),所以它只會增加最後objectlist

    example:Object obj =null; while(some condition is true){ obj = new object(); obj.setParam(); } lst.add(obj);

    在這個例子中,你可能每次初始化obj但要添加 僅去年objlist。在這裏,您必須將lst.add(obj); 放在loop之內。

我希望你的情況只屬於這些。

相關問題