ListView适配器 - 更改适配器后SetOnItemClickListener失败

时间:2013-04-15 17:57:42

标签: android android-listview android-adapter

我有一个由适配器控制的ListView。此适配器负责以动态方式加载内容并填充ListView。第一次填充ListView时,每当我单击某个项时,都会调用onItemClick方法。但是,一旦我对适配器进行了更改(向下滚动,这会强制适配器加载更多数据并将其添加到ListView),onItemClick方法就不会被调用。

这是相关代码:

public class RingtonesListActivity extends Activity {

    private ArrayList<Category> categories;

    ListView myListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        this.categories = getIntent().getParcelableArrayListExtra("categories");

        myListView = (ListView) findViewById(R.id.listView);
        myListView.setAdapter(new MyAdapter(this, categories));

        // click in ringtone
        myListView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View view, int i,
                    long arg3) {

                Intent intent = new Intent(view.getContext(), NewActivity.class);
                intent.putExtra("resource", (Resource) myListView.getItemAtPosition(i));

                startActivity(intent);        
            }
        });

    }
}

在我的适配器中:

public class MyAdapter extends BaseAdapter {
    private List<Resources> resources;
    ...

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

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {

            if (position >= getCount() - 1) {
                    // do some stuff that adds entries to the resources List
                    notifyDataSetChanged();
            }
            TextView tv = new TextView(this.context);
            tv.setText(resources.get(position).getName());
            return tv;
    }

0 个答案:

没有答案
相关问题