nida
nida

Reputation: 656

how to write code for onitemClickListener for customized listview using BaseAdapter?

here is the code for custom listview using BaseAdapter in android its working fine:

public class CustomListAdapter extends BaseAdapter {

    private ArrayList<TaskClass> _listData;
    Context _c;

    public CustomListAdapter(Context context, ArrayList<TaskClass> listData) {

        _listData = listData;
        _c = context;

    }

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

    @Override
    public Object getItem(int position) {
        return _listData.get(position);
    }

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

    public View getView(int position,View convertView,ViewGroup parent) {
        View v = convertView;
        if (v == null) 
        {
            LayoutInflater layoutInflator = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = layoutInflator.inflate(R.layout.listview_row, null);
        }
        TextView titleText = (TextView)v.findViewById(R.id.holdTitleText);
        TextView  catText = (TextView)v.findViewById(R.id.holdCatText);
        TextView  descText = (TextView)v.findViewById(R.id.holdDescText);
        TextView  dateText = (TextView)v.findViewById(R.id.holdDateText);
        //CheckBox checkBoxForEachItem = (CheckBox)v.findViewById(R.id.)
        TaskClass taskClassInstance = _listData.get(position);
        titleText.setText(taskClassInstance.getTitle());
        catText.setText(taskClassInstance.getTaskCategory());
        descText.setText(taskClassInstance.getDescription());
        dateText.setText(taskClassInstance.getTaskDate());
        return v;


    }


}

and in activity i m binding listview with custom adapter :

listViewInstance.setAdapter(new CustomListAdapter(getApplicationContext(),taskClasslistInstance));

where "taskclasslistinstance" is my arraylist conatining data from DB its working fine now i need to write function for listitemclick so that when user click on any listitem i can get rowid of that listitem record from Database.so after getting rowwid I can delete records from listview and from db and can edit informations

Upvotes: 0

Views: 359

Answers (3)

Sagar Maiyad
Sagar Maiyad

Reputation: 12743

you can also set in getView method like below:

public View getView(int position,View convertView,ViewGroup parent) {
        View v = convertView;
        if (v == null) 
        {
            LayoutInflater layoutInflator = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = layoutInflator.inflate(R.layout.listview_row, null);
        }
        TextView titleText = (TextView)v.findViewById(R.id.holdTitleText);
        TextView  catText = (TextView)v.findViewById(R.id.holdCatText);
        TextView  descText = (TextView)v.findViewById(R.id.holdDescText);
        TextView  dateText = (TextView)v.findViewById(R.id.holdDateText);
        //CheckBox checkBoxForEachItem = (CheckBox)v.findViewById(R.id.)
        TaskClass taskClassInstance = _listData.get(position);
        titleText.setText(taskClassInstance.getTitle());
        catText.setText(taskClassInstance.getTaskCategory());
        descText.setText(taskClassInstance.getDescription());
        dateText.setText(taskClassInstance.getTaskDate());

       v.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            //Perform an action when this list item is clicked
        }
    });
        return v;


    }

Upvotes: 0

GMZ
GMZ

Reputation: 334

Here a small example from my project:

 list = (ListView) rootView.findViewById(R.id.list);

    adapter = new LazyAdapterAlbum(getActivity(), songs);
    list.setAdapter(adapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent i = new Intent(getActivity(), AlbumActivity.class);
            Bundle args = new Bundle();
            args.putString(AlbumActivity.ALBUM_NAME, adapter.getItem(position).getName());
            i.putExtras(args);
            startActivity(i);
        }
    });

You have to set an onClickListener on your ListView.

Upvotes: 0

Ken Wolf
Ken Wolf

Reputation: 23279

Well, we don't know about your TaskClass, but I expect you want something like this:

listViewInstance.setOnItemClickListener(new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
        TaskClass taskClass = taskClasslistInstance.get(pos);
        Log.d(TAG, "Clicked on: " + taskClass)
        // Do stuff with taskClass
    }});

Upvotes: 1

Related Questions