如何在android中选择列表中的特定数据?

问题描述:

你好我该如何选择列表中的特定数据?如何在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

您是否获得最后一个值,即每个项目点击时的大人物? –

,有一个指标,你可以从索引列表让你的特定项目。在你的情况下,你也可以从该列表中获得该职位。

+1

如果你发布你的代码,这将是更好 –

+0

好吧ima编辑我的帖子 –

+0

尝试阅读此https://stackoverflow.com/questions/15661895/viewpager-and-fragment-onclicklistener-not-working-right我认为它可以解决你的问题。 –

根据你的评论我猜你不是每次都创建新的对象..如果你正在循环数组把对象生成代码放在循环内。如果那是不是这样我不能帮助不看代码

看着你的问题,可以有两个问题,我可以看到:

  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之内。

我希望你的情况只属于这些。