无法在片段中选择列表视图中的项目

时间:2013-12-11 16:43:00

标签: android listview android-listview android-fragments

我正在尝试打印片段视图中的一些项目。 我遇到的问题是我无法点击,选择列表中的项目。所有列表都是灰色的。除了勾选项目中的复选框,我无法用它做任何事情。我可以上下滚动,但没有点击一行。

这是我的片段类:

public class MyClass extends Fragment
{
ArrayList<Element> elements = new ArrayList<Element>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.backup, container, false);

    ListAdapter boxAdapter;
    fillData();
    boxAdapter = new ListAdapter(getActivity().getApplicationContext(), elements);
    ListView lvMain = (ListView) rootView.findViewById(R.id.lvMain);

    // I have no idea here on what to do
    lvMain.setClickable(true);
    lvMain.setChoiceMode(2);
    lvMain.setFocusable(true);
    lvMain.setAdapter(boxAdapter);
    lvMain.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    lvMain.setFocusableInTouchMode(true);
    lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, final View view,
            int position, long id) {

        }

      });
    return rootView;
}

我的列表适配器

public class ListAdapter extends BaseAdapter{
  Context ctx;
  LayoutInflater lInflater;
  ArrayList<Element> objects;

  ListAdapter(Context context, ArrayList<Element> ele) {
        ctx = context;
        objects = ele;
        lInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.item, parent, false);
        }

        Element p = getElement(position);

        ((TextView) view.findViewById(R.id.name)).setText(p.getName());
        ((TextView) view.findViewById(R.id.size)).setText(p.getSize().toString());
        ((ImageView) view.findViewById(R.id.ivImage)).setImageResource(p.getImage());

        CheckBox cb = (CheckBox) view.findViewById(R.id.cbBox);
        cb.setOnCheckedChangeListener(myCheckChangList);
        cb.setTag(position);
        cb.setChecked(p.isBox());


        return view;
    }

提前感谢您的帮助

2 个答案:

答案 0 :(得分:3)

由于您没有回复我的问题,因此我能想到的唯一原因是您将checkbox的宽度设置为match_parentfill_parent而{ {1}}正在全力以赴。

请将checkbox的宽度设置为checkbox,然后将其设置为不可聚焦,即不将其全部焦点放在wrap_contentparent上,并允许它如果可以,请关注。

listview

如果这不能解决问题,请发布您的android:focusable="false" android:layout_width="wrap_content" 以确定实际问题。

答案 1 :(得分:1)

问题可能是你在列表项中有复选框,因为复选框是可聚焦的。

尝试查看此答案Android custom ListView with ImageButton is not getting focus