-1

CustomListAdapter.class

How do I get the value of TextView eng from listview and set this value in two different edittext one by one.

public class CustomListAdapter extends ArrayAdapter<DataModel> implements View.OnClickListener{

    Context mContext;
    ArrayList<DataModel> dataSet;

    public CustomListAdapter(ArrayList<DataModel> dataModels, Context context) {
        super(context, R.layout.route, dataModels);
        this.dataSet = dataModels;
        this.mContext = context;
    }
    private static class ViewHolder {
        TextView eng;
        TextView hindi;
    }

    @Override
    public void onClick(View v) {
        int position = (Integer) v.getTag();
        Object object = getItem(position);
        DataModel dataModel = (DataModel) object;
        switch (v.getId()) {
            case R.id.eng:
                String s = dataModel.getStationEng();
                //mStart.(FareCalculatorActivity.class).getClasses().setText(s.trim().toUpperCase().toString());
                break;

            case R.id.hindi:
                String s1 = dataModel.getStationEng();
                break;
        }
    }
    private int lastPosition = -1;
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        DataModel dataModel = getItem(position);
        ViewHolder viewHolder;
        final View result;

        if (convertView == null) {
            viewHolder = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.route, parent, false);
            viewHolder.eng = convertView.findViewById(R.id.eng);
            viewHolder.hindi = (TextView) convertView.findViewById(R.id.hindi);
            result = convertView;
            convertView.setTag(viewHolder);
        }
        else
        {
            viewHolder = (ViewHolder) convertView.getTag();
            result = convertView;
        }
        Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
        result.startAnimation(animation);
        lastPosition = position;
        viewHolder.eng.setText(dataModel.getStationEng());
        viewHolder.hindi.setText(dataModel.getStationhindi());
        viewHolder.eng.setOnClickListener(this);
        viewHolder.eng.setTag(position);
        viewHolder.hindi.setOnClickListener(this);
        viewHolder.hindi.setTag(position);
        return convertView;
    }
}

enter image description here

get value from custom listview adapter and set value to edittext one by one.
this listview is filter listview, I want the value of listview and set to the edittext

AbyxDev
  • 1,363
  • 16
  • 30
pankaj sharma
  • 181
  • 2
  • 12

2 Answers2

1

Either you create a separate callback interface or use the View.OnClickListener. Hereby modified your existing adapter class.

public class CustomListAdapter extends ArrayAdapter<DataModel> {

    Context mContext;
    ArrayList<DataModel> dataSet;
    View.OnClickListener listener;

    public CustomListAdapter(ArrayList<DataModel> dataModels, Context context, View.OnClickListener listener) {
        super(context, R.layout.route, dataModels);
        this.dataSet = dataModels;
        this.mContext = context;
        this.listener = listener;
    }
    private static class ViewHolder {
        TextView eng;
        TextView hindi;
    }


    private int lastPosition = -1;
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        DataModel dataModel = getItem(position);
        ViewHolder viewHolder;
        final View result;

        if (convertView == null) {
            viewHolder = new ViewHolder();
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.route, parent, false);
            viewHolder.eng = convertView.findViewById(R.id.eng);
            viewHolder.hindi = (TextView) convertView.findViewById(R.id.hindi);
            result = convertView;
            convertView.setTag(viewHolder);
        }
        else
        {
            viewHolder = (ViewHolder) convertView.getTag();
            result = convertView;
        }
        Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
        result.startAnimation(animation);
        lastPosition = position;
        viewHolder.eng.setText(dataModel.getStationEng());
        viewHolder.hindi.setText(dataModel.getStationhindi());
        viewHolder.eng.setOnClickListener(listener);
        viewHolder.eng.setTag(position);
        viewHolder.hindi.setOnClickListener(listener);
        viewHolder.hindi.setTag(position);
        return convertView;
    }
}

now change the call where you have initialized adapter in activity/fragment like below

CustomListAdapter adapter = new CustomListAdapter(data,context,new View.OnClickListener() { 
    @Override
    public void onClick(View v) {
        int position = (Integer) v.getTag();
        Object object = getItem(position);
        DataModel dataModel = (DataModel) object;
        switch (v.getId()) {

            case R.id.eng:
                String s = dataModel.getStationEng();
                //mStart.(FareCalculatorActivity.class).getClasses().setText(s.trim().toUpperCase().toString());
                // set to editText
                break;

            case R.id.hindi:
                String s1 = dataModel.getStationEng();
                // set to editText
                break;
        }
    }
});
Krishna Sharma
  • 2,828
  • 1
  • 12
  • 23
  • case R.id.hindi: String s1 = dataModel.getStationEng(); // set to editText //it show me error when i call edittext here break; – pankaj sharma Jul 29 '18 at 19:41
  • 1
    have you declared any edittext instance where you calling this adapter ? I am expecting you should have two edittext in your activity or fragment where setting up adapter. – Krishna Sharma Jul 29 '18 at 19:44
  • @pankajsharma Is something wrong ? yesterday you have accepted the answer but today seems you have withdrawn it. May I know the reason please. – Krishna Sharma Jul 30 '18 at 19:02
  • Can you please explain the issue you facing now ? – Krishna Sharma Jul 30 '18 at 19:05
  • sorry for devoting i got solution if (mStart.isFocused()) { String s = mList.getItemAtPosition(position).toString(); mStart.setText(s); } – pankaj sharma Jul 30 '18 at 19:13
  • @pankajsharma **There are many ways to solve the issue. I spent more than hour to fix your issue and even you agreed on the solution and accepted the answer as it worked for you. but atleast we shouldn't withdrawn our answer if we found some other way to solve our problem.** Anyway never mind. Thank you !! – Krishna Sharma Jul 30 '18 at 19:24
0

Some of the ways that solve the problem are :-

1.Using the interface to pass data from adapter class to the activity .

  1. Calling an function defined in the activity with the data got on the click listener , and using it to set the edit-texts.

This link will help to find the above mentioned approaches in more detail

Hope this helps.

Kaveri
  • 1,060
  • 2
  • 12
  • 21