Search code examples
javalistviewarraylistselecteditemselectedvalue

How to get value(s) of selected Item in listview - Android


Am just new to Android (Java), I would like to get the value or values of the item user selected from my Custom ListView, below is a sample code i was trying to retrieve the data

ContactsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

       // String str= ContactsListView.getSelectedItem();
        //String selectedFromList = (ContactsListView.getItemAtPosition(position).toString());
        String val =  parent.getAdapter().getItem(position).toString();
        Log.i("Item", "Selected: " + val);       
    }
});

But this is what am getting

02-04 18:16:31.773 10255-10255/com.app.com.sms I/Item: Selected: com.app.com.smsapp.ThreeStrings@42829718 02-04 18:16:33.323 10255-10255/com.app.com.sms I/Item: Selected: com.app.com.smsapp.ThreeStrings@428297c0 02-04 18:16:34.463 10255-10255/com.app.com.sms I/Item: Selected: com.app.com.smsapp.ThreeStrings@42829718

here is my adapter

public class ThreeHorizontalTextViewsAdapter extends
ArrayAdapter<ThreeStrings> {

private int layoutResource;

public ThreeHorizontalTextViewsAdapter(Context context, int layoutResource, List<ThreeStrings> threeStringsList) {
    super(context, layoutResource, threeStringsList);
    this.layoutResource = layoutResource;
}

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

    View view = convertView;

    if (view == null) {
        LayoutInflater layoutInflater = LayoutInflater.from(getContext());
        view = layoutInflater.inflate(layoutResource, null);
    }

    ThreeStrings threeStrings = getItem(position);

    if (threeStrings != null) {
        TextView leftTextView = (TextView) view.findViewById(R.id.leftTextView);
        TextView rightTextView = (TextView) view.findViewById(R.id.rightTextView);
        TextView centreTextView = (TextView) view.findViewById(R.id.centreTextView);
        TextView text_from = (TextView) view.findViewById(R.id.text_from);

        if (leftTextView != null) {
            leftTextView.setText(threeStrings.getLeft().toUpperCase());
        }

        if (rightTextView != null) {
            rightTextView.setText(threeStrings.getRight());
        }

        if (centreTextView != null) {
            centreTextView.setText(threeStrings.getCentre());
        }

        if (text_from != null) {
            text_from.setText(threeStrings.getBottom());
        }
    }

    return view;
} }
public class ThreeStrings {
    private String left;
    private String right;
    private String centre;
    private String bottom;

    public ThreeStrings(String left, String right, String centre, String bottom) {
        this.left   = left;
        this.right  = right;
        this.centre = centre;
        this.bottom = bottom;
    }
    public String getLeft() {
        return left;
    }
    public String getCentre() {
        return centre;
    }
    public String getRight() {
        return right;
    }
    public String getBottom() {return bottom;}
}

in the listView am targeting centre as selected value. How do i get the value(s)/centre of the selected item?


Solution

  • You could do something like this below:-

    ContactsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
    
          ThreeStrings threeStrings = (ThreeStrings)ContactsListView.getItemAtPosition(position);
    
            Log.i("Item", "Selected: " + threeStrings.getCentre());       
        }
    });