How to get list row index from custom list adapter?

I have two layouts

  • main.xml ----- With one ListView (say listview_01).
  • row.xml ----- With ImageView (say, imageView_01) and TextView (say, textView_01)

I populate listview_01 row.xmlmine as a string, using the array data that I have.
I wanted to perform an operation on an event onclick() imageView_01, its work.
I added onclick()in imageView_01to getView()my CustomlistAdapter.

But can someone tell me how to get the row index in the onClick () event of the listview_01 image of the row image, in CustomListAdapter?

Here is my code

Sorry, but I can’t download all my activity and adapter code.

SOME ACTIVITY CODE

listView_episodesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub

        mQuickAction.show(arg1);

    }
});

SOME adapter code

ImageView imageView_EpisodePic = (ImageView) convertView.findViewById(R.id.imageView_episode_pic);
drawableManager.fetchDrawableOnThread(episodeTemp.episodeImage, imageView_EpisodePic);

imageView_EpisodePic.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Click on image", Toast.LENGTH_LONG).show();
    }
});

listView, . . ListView(main.xml) ImageView (row.xml)

+3
5

mListView.getPositionForView(v); onClick(View v), listview. ( , : , , )

+1

onItemSelectedListeneter() , id.. (arg1)

0

, . Nikola Activity Fragment, , .

ImageView , [0] , "name" . , , , .

     public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;

        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.row_project, null);

            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.name = (TextView)view.findViewById(R.id.textProjectName);
            viewHolder.desc = (TextView)view.findViewById(R.id.textProjDesc);
            viewHolder.image = (ImageView)view.findViewById(R.id.imgProj);           
            viewHolder.name.setTag(position);

            Log.d(TAG, "Position: " + position);


            viewHolder.image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d(TAG, "Image Selected at Index: " + viewHolder.name.getTag());
                }

            });

            view.setTag(viewHolder);
        }
        else {
            view = convertView;
            ((ViewHolder) view.getTag()).name.setTag(list.get(position));
        }

        ViewHolder holder = (ViewHolder) view.getTag();
        holder.name.setText(list.get(position).getName());
        holder.desc.setText(list.get(position).getDescription());

        return view;
    }
} 
0

"convertView".

convertView.setId()

/, OnClickListener.

      convertView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // item position is fetched here. this is exactly the same position of the selected item in your list
                int selectedPosition = v.getId();
            }
        });

id convertView. ,

convertView.imageView.setId();

id :

    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            int selectedPosition = v.getId();
        }
    });

public View getView(int position, View convertView, ViewGroup vg) {

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.row_book_item, null);
        viewHolder = new ViewHolder();

        // ...

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

    if (listItems.size() > 0) {
        // item position is set here. this is exactly the same position of your item in the list
        convertView.setId(position);
        convertView.imageView.setId(position);

        // ...

        convertView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // item position is fetched here. this is exactly the same position of the selected item in your list
                int selectedPosition = v.getId();
            }
        });

        imageView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // item position is fetched here. this is exactly the same position of the selected item in your list
                int selectedPosition = v.getId();
            }
        });


    }
    return convertView;
}
0

:

public View getView(final int position, View convertView, ViewGroup parent) {

where position is the index of the clicked row. this should be available in your method onClick().

-1
source

All Articles