有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java列表视图不调用onItemClickListener和OnItemLongClickListener

我实现了一个抽象类,它具有如下列表视图:

public abstract class ExampleListFragment extends ExampleFragment{

    protected ListView _listView;

    public ExampleListFragment () {
        super();
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //Set Up the Bottom Bar
        View view = super.onCreateView(inflater, container, savedInstanceState);

        addList();

        return view;

    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

    }

    public void addList() {
        _listView = new ListView(getActivity());

        RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        parms.addRule(RelativeLayout.CENTER_HORIZONTAL);
        parms.addRule(RelativeLayout.BELOW, R.id.tableLayout);

        _listView.setLayoutParams(parms);
        _listView.setClickable(true);
        _listView.setFocusable(true);

        _listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                longListClick(i);
                return true;
            }
        });

        _listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                listClick(i);
            }
        });


        _layout.addView(_listView);

    }

    public abstract void longListClick(int pos);
    public abstract void listClick(int pos);
}

然后,我有一个继承自该类的类来实现抽象方法,当单击列表中的某个项时,应该调用这些方法

 public class TwitterFragment extends ExampleListFragment {

        private TwitterAdapter _adapter;

//...


        @Override
        public void onSelected() {

            _adapter      = new TwitterAdapter(getActivity());

            populateAdapter();

        }

        private void populateAdapter() {


            showLoadingTweets();

            new TwitterGetTimelineTask().execute(username); //fills adapter with Twitter status info...

        }


        @Override
        public void longListClick(int pos) {

        Toast toast = Toast.makeText(getActivity(),String.format("You have clicked item number: %d",pos),
            Toast.LENGTH_SHORT);
        toast.show();

        }

        @Override
        public void listClick(int pos) {

        Toast toast = Toast.makeText(getActivity(),String.format("You have clicked item number: %d",pos),
            Toast.LENGTH_SHORT);
        toast.show();


        }

       //...

        class TwitterGetTimelineTask extends AsyncTask<String, String, String> {

          //...
        }
    }

然而,每当我点击一个项目时,它似乎都不会进入McClick功能

有什么想法吗?非常感谢你的帮助

*编辑*

根据要求,下面是我的适配器的代码

public class TwitterAdapter extends BaseAdapter {
    private ArrayList<StatusDetails> _statusDetailsArrayList;
    private LayoutInflater _inflater;

    public TwitterAdapter(Context context) {
        _statusDetailsArrayList = new ArrayList<StatusDetails>();
        _inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return _statusDetailsArrayList.size();
    }

    @Override
    public Object getItem(int i) {
        return _statusDetailsArrayList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return _statusDetailsArrayList.get(i).get_id();
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder;
        if (view == null) {
            view = _inflater.inflate(R.layout.twitter_layout, null);
            holder = new ViewHolder();
            holder.img_icon = (ImageView) view.findViewById(R.id.statusImage);
            holder.text_line1 = (TextView) view.findViewById(R.id.statusText);
            holder.text_line2 = (TextView) view.findViewById(R.id.statusDateText);


            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        Bitmap bmp = _statusDetailsArrayList.get(i).get_profile();

        if (bmp == null) {
            holder.img_icon.setImageResource(R.drawable.ic_action_twitter);
        } else {
            holder.img_icon.setImageBitmap(bmp);
        }
        holder.text_line1.setText(_statusDetailsArrayList.get(i).get_text());
        holder.text_line2.setText(_statusDetailsArrayList.get(i).get_date());


        return view;
    }

    public void addStatus(StatusDetails details) {
        _statusDetailsArrayList.add(details);
    }


    public void setStatuses(ArrayList<StatusDetails> details) {
        _statusDetailsArrayList = details;
    }

    public ArrayList<StatusDetails> getEvents() {
        return _statusDetailsArrayList;
    }

    public void removeAll() {
        _statusDetailsArrayList.clear();
    }

    private class ViewHolder {
        ImageView img_icon;
        TextView text_line1;
        TextView text_line2;
    }

}

如果需要,每个列表布局的XML

<ImageButton
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:id="@+id/statusImage"
    安卓:layout_alignParentTop="true"
    安卓:layout_alignParentLeft="true" />

<TextView
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:textAppearance="?安卓:attr/textAppearanceSmall"
    安卓:text="Status"
    安卓:id="@+id/statusText"
    安卓:layout_alignParentTop="true"
    安卓:autoLink="web"
    安卓:textColor="@安卓:color/white"
    安卓:layout_toRightOf="@+id/statusImage" />

<TextView
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:textAppearance="?安卓:attr/textAppearanceSmall"
    安卓:layout_below="@id/statusText"
    安卓:text="Date"
    安卓:id="@+id/statusDateText"
    安卓:layout_alignBottom="@+id/statusImage"
    安卓:layout_toRightOf="@+id/statusImage" />

谢谢


共 (0) 个答案