如何在android中选择列表中的特定数据?
你好我该如何选择列表中的特定数据?如何在android中选择列表中的特定数据?
我有这个名单
例如我在凯撒(这不是第一次,也不在列表的最后) 点击我设置的片段
name.setText(obj.getName());
但出现的是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;
}
}
};
}
,有一个指标,你可以从索引列表让你的特定项目。在你的情况下,你也可以从该列表中获得该职位。
如果你发布你的代码,这将是更好 –
好吧ima编辑我的帖子 –
尝试阅读此https://stackoverflow.com/questions/15661895/viewpager-and-fragment-onclicklistener-not-working-right我认为它可以解决你的问题。 –
根据你的评论我猜你不是每次都创建新的对象..如果你正在循环数组把对象生成代码放在循环内。如果那是不是这样我不能帮助不看代码
看着你的问题,可以有两个问题,我可以看到:
-
你没有初始化之前您的每一次
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
。 -
您添加
obj
外loop
在你所设置的参数 (所有的名字),所以它只会增加最后object
到list
。example:Object obj =null; while(some condition is true){ obj = new object(); obj.setParam(); } lst.add(obj);
在这个例子中,你可能每次初始化
obj
但要添加 仅去年obj
到list
。在这里,您必须将lst.add(obj);
放在loop
之内。
我希望你的情况只属于这些。
发布您的代码如何处理列表项单击侦听器? –
如何在片段中获取obj对象?请发布您的适配器和片段代码 – Valentun
您是否获得最后一个值,即每个项目点击时的大人物? –