Hello,
I tried to have a customed listview with the itemclick listener. I
followed with some small modifications the tutorials from
http://www.androidpeople.com/android-custom-listview-tutorial-example/.
If I put in comment "adapter.notifyDataSetChanged();", all work well:
when I click on an item, the listener is fired. But if I use
"adapter.notifyDataSetChanged();" (I need it because my list will be
constructed dynamically), no listener is fired when I click on any
item.
Does someone have an idea about the error I made ? Or shall I use
another way to do what I want ?

Thanks !

Here are my codes:
public class CustomListViewOnClick extends Activity {
        private CustomListView l1;


        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                l1 = new CustomListView(this);
                setContentView(l1);
        }
}

public class CustomListView extends ListView {
        private static Context context;
        private EfficientAdapter adapter;

        private class EfficientAdapter extends BaseAdapter {
                private LayoutInflater mInflater;

                public EfficientAdapter(Context context, int 
textViewResourceId) {
                        mInflater = LayoutInflater.from(context);

                }

                public int getCount() {
                        return country.length;
                }

                public Object getItem(int position) {
                        return position;
                }

                public long getItemId(int position) {
                        return position;
                }

                public View getView(int position, View convertView, ViewGroup
parent) {
                        ViewHolder holder;
                        if (convertView == null) {
                                convertView = 
mInflater.inflate(R.layout.listview, null);
                                holder = new ViewHolder();
                                holder.text = (TextView) convertView
                                                .findViewById(R.id.TextView01);
                                holder.text2 = (TextView) convertView
                                                .findViewById(R.id.TextView02);

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

                        holder.text.setText(curr[position]);
                        holder.text2.setText(country[position]);

                        return convertView;
                }

                class ViewHolder {
                        TextView text;
                        TextView text2;
                }
        }

        public CustomListView(Context context) {
                super(context);
                CustomListView.context = context;
                adapter = new EfficientAdapter(context, R.layout.listview);
                setAdapter(adapter);
                setOnItemClickListener(new OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> a, View v, int 
position,
                                        long id) {
                                AlertDialog.Builder adb;
                                adb = new 
AlertDialog.Builder(CustomListView.context);
                                adb.setTitle("LVSelectedItemExample");
                                adb.setMessage("Selected Item is = "
                                                + getItemAtPosition(position));
                                adb.setPositiveButton("Ok", null);
                                adb.show();
                        }
                });
        }

        @Override
        protected void onDraw(Canvas canvas) {
                adapter.notifyDataSetChanged();
        }

        private static final String[] country = { "Iceland", "India",
"Indonesia",
                        "Iran", "Iraq", "Ireland", "Israel", "Italy", "Laos", 
"Latvia",
                        "Lebanon", "Lesotho ", "Liberia", "Libya", "Lithuania",
                        "Luxembourg" };
        private static final String[] curr = { "ISK", "INR", "IDR", "IRR",
"IQD",
                        "EUR", "ILS", "EUR", "LAK", "LVL", "LBP", "LSL ", 
"LRD", "LYD",
                        "LTL ", "EUR"

        };

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to