Parth Bhayani
Parth Bhayani

Reputation: 1924

How should I will get the position of the dynamic view in ANDROID

Below is the view that I have created dynamically and I have added two rows but I can't get the position of that particular row, so I could I get it. I have created four textviews with one view, but how can I get the position of that particular view?

enter image description here

On click of a button I have added the code mentioned below,

private LinearLayout llAddMember;
llAddMember = (LinearLayout) findViewById(R.id.llAddMember);
AddFamilyMemberModel familyMemberModel = new AddFamilyMemberModel();
                familyMemberModel.setStrMemberName(strMemberName);
                familyMemberModel.setStrGender(strGender);
                familyMemberModel.setStrMemberRelation(strMemberRelation);
                familyMemberModel.setStrMemberAge(strMemberAge);
                arrAddFamilyMember.add(familyMemberModel);

                LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                llAddMember.setBackgroundColor(getResources().getColor(android.R.color.white));

                TextView txtResMemberName = new TextView(RegistrationPatientActivity.this);
                txtResMemberName.setLayoutParams(lparams);
                txtResMemberName.setText("Member Name: " +familyMemberModel.getStrMemberName());
                txtResMemberName.setTypeface(Typeface.createFromAsset(getAssets(),"Roboto-Regular.ttf"));
                txtResMemberName.setTextSize(14);
                txtResMemberName.setTextColor(Color.parseColor("#9C9C9C"));
                txtResMemberName.setSingleLine(true);
                llAddMember.addView(txtResMemberName);
                lparams.setMargins(50, 5, 40, 0);

                View view1 = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView1 = new LayoutParams(LayoutParams.WRAP_CONTENT, 2);
                view1.setLayoutParams(lparamsView1);
                view1.setBackgroundColor(Color.parseColor("#DEDDDA"));
                llAddMember.addView(view1);
                lparamsView1.setMargins(50, 10, 0, 0);

                TextView txtResGender = new TextView(RegistrationPatientActivity.this);
                txtResGender.setLayoutParams(lparams);
                txtResGender.setText("Member Gender: " +familyMemberModel.getStrGender());
                txtResGender.setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Regular.ttf"));
                txtResGender.setTextSize(14);
                txtResGender.setTextColor(Color.parseColor("#9C9C9C"));
                llAddMember.addView(txtResGender);
                lparams.setMargins(50, 10, 0, 0);

                View view2 = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView2 = new LayoutParams(LayoutParams.WRAP_CONTENT, 2);
                view2.setLayoutParams(lparamsView2);
                view2.setBackgroundColor(Color.parseColor("#DEDDDA"));
                llAddMember.addView(view2);
                lparamsView2.setMargins(50, 10, 0, 0);

                TextView txtResMemberRelation = new TextView(RegistrationPatientActivity.this);
                txtResMemberRelation.setLayoutParams(lparams);
                txtResMemberRelation.setText("Member Relation: " +familyMemberModel.getStrMemberRelation());
                txtResMemberRelation.setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Regular.ttf"));
                txtResMemberRelation.setTextSize(14);
                txtResMemberRelation.setTextColor(Color.parseColor("#9C9C9C"));
                llAddMember.addView(txtResMemberRelation);
                lparams.setMargins(50, 10, 0, 0);

                View view3 = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView3 = new LayoutParams(LayoutParams.WRAP_CONTENT, 2);
                view3.setLayoutParams(lparamsView3);
                view3.setBackgroundColor(Color.parseColor("#DEDDDA"));
                llAddMember.addView(view3);
                lparamsView3.setMargins(50, 10, 0, 0);

                TextView txtResMemberAge = new TextView(RegistrationPatientActivity.this);
                txtResMemberAge.setLayoutParams(lparams);
                txtResMemberAge.setText("Member Age: " +familyMemberModel.getStrMemberAge());
                txtResMemberAge.setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Regular.ttf"));
                txtResMemberAge.setTextSize(14);
                txtResMemberAge.setTextColor(Color.parseColor("#9C9C9C"));
                llAddMember.addView(txtResMemberAge);
                lparams.setMargins(50, 10, 0, 0);

                View view = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView = new LayoutParams(LayoutParams.WRAP_CONTENT, 4);
                view.setLayoutParams(lparamsView);
                view.setBackgroundColor(Color.parseColor("#006D67"));
                llAddMember.addView(view);
                lparamsView.setMargins(0, 10, 0, 0);

Upvotes: 0

Views: 91

Answers (4)

Parth Bhayani
Parth Bhayani

Reputation: 1924

I came to the conclusion for the above question and I have implemented it to my project and it works fine for me.

I have created one main linearlayout and for that I have added those views to that layout and the lastly I have added that newly created view to my main linearlayout and hopefully it works.

AddFamilyMemberModel familyMemberModel = new AddFamilyMemberModel();
                familyMemberModel.setStrMemberName(strMemberName);
                familyMemberModel.setStrGender(strGender);
                familyMemberModel.setStrMemberRelation(strMemberRelation);
                familyMemberModel.setStrMemberAge(strMemberAge);
                arrAddFamilyMember.add(familyMemberModel);

                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                LinearLayout linearLayout = new LinearLayout(getApplicationContext());
                linearLayout.setLayoutParams(layoutParams);
                linearLayout.setOrientation(LinearLayout.VERTICAL);

                LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                linearLayout.setBackgroundColor(getResources().getColor(android.R.color.white));

                TextView txtResMemberName = new TextView(RegistrationPatientActivity.this);
                txtResMemberName.setLayoutParams(lparams);
                txtResMemberName.setText("Member Name: " +familyMemberModel.getStrMemberName());
                txtResMemberName.setTypeface(Typeface.createFromAsset(getAssets(),"Roboto-Regular.ttf"));
                txtResMemberName.setTextSize(14);
                txtResMemberName.setTextColor(Color.parseColor("#9C9C9C"));
                txtResMemberName.setSingleLine(true);
                linearLayout.addView(txtResMemberName);
                lparams.setMargins(50, 5, 40, 0);

                View view1 = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView1 = new LayoutParams(LayoutParams.WRAP_CONTENT, 2);
                view1.setLayoutParams(lparamsView1);
                view1.setBackgroundColor(Color.parseColor("#DEDDDA"));
                linearLayout.addView(view1);
                lparamsView1.setMargins(50, 10, 0, 0);

                TextView txtResGender = new TextView(RegistrationPatientActivity.this);
                txtResGender.setLayoutParams(lparams);
                txtResGender.setText("Member Gender: " +familyMemberModel.getStrGender());
                txtResGender.setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Regular.ttf"));
                txtResGender.setTextSize(14);
                txtResGender.setTextColor(Color.parseColor("#9C9C9C"));
                linearLayout.addView(txtResGender);
                lparams.setMargins(50, 10, 0, 0);

                View view2 = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView2 = new LayoutParams(LayoutParams.WRAP_CONTENT, 2);
                view2.setLayoutParams(lparamsView2);
                view2.setBackgroundColor(Color.parseColor("#DEDDDA"));
                linearLayout.addView(view2);
                lparamsView2.setMargins(50, 10, 0, 0);

                TextView txtResMemberRelation = new TextView(RegistrationPatientActivity.this);
                txtResMemberRelation.setLayoutParams(lparams);
                txtResMemberRelation.setText("Member Relation: " +familyMemberModel.getStrMemberRelation());
                txtResMemberRelation.setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Regular.ttf"));
                txtResMemberRelation.setTextSize(14);
                txtResMemberRelation.setTextColor(Color.parseColor("#9C9C9C"));
                linearLayout.addView(txtResMemberRelation);
                lparams.setMargins(50, 10, 0, 0);

                View view3 = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView3 = new LayoutParams(LayoutParams.WRAP_CONTENT, 2);
                view3.setLayoutParams(lparamsView3);
                view3.setBackgroundColor(Color.parseColor("#DEDDDA"));
                linearLayout.addView(view3);
                lparamsView3.setMargins(50, 10, 0, 0);

                TextView txtResMemberAge = new TextView(RegistrationPatientActivity.this);
                txtResMemberAge.setLayoutParams(lparams);
                txtResMemberAge.setText("Member Age: " +familyMemberModel.getStrMemberAge());
                txtResMemberAge.setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Regular.ttf"));
                txtResMemberAge.setTextSize(14);
                txtResMemberAge.setTextColor(Color.parseColor("#9C9C9C"));
                linearLayout.addView(txtResMemberAge);
                lparams.setMargins(50, 10, 0, 0);

                View view = new View(RegistrationPatientActivity.this);
                LayoutParams lparamsView = new LayoutParams(LayoutParams.WRAP_CONTENT, 4);
                view.setLayoutParams(lparamsView);
                view.setBackgroundColor(Color.parseColor("#006D67"));
                linearLayout.addView(view);
                lparamsView.setMargins(0, 10, 0, 0);

                int pos = arrAddFamilyMember.size()-1;
                linearLayout.setTag(pos);
                linearLayout.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        int position  = Integer.parseInt(v.getTag().toString());
                        AlertDialogUtility.SHOW_TOAST(RegistrationPatientActivity.this, "Position: "+position);
                    }
                });

                llAddMember.addView(linearLayout);

Upvotes: 0

Shishupal Shakya
Shishupal Shakya

Reputation: 1682

As we have discussed above you have managed this View using LinearLayout ,this is not the right approach to proceed , You need to implement this task using RecyclerView or ListView which is provided by default in Android . I would suggest you to go through this Link

Upvotes: 0

starkshang
starkshang

Reputation: 8558

If you just have four view,you can set tag with position when create it.like this:

txtResMemberName.setTag(1); 

and then you can get position by:

int pos = (Integer) txtResMemberName.getTag();

Upvotes: 1

mjp66
mjp66

Reputation: 4213

You're using a listview for this, right?

In your activity/fragment...

listview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // do stuff ('position' is the position of the item you've clicked on)
    }
});

Upvotes: 1

Related Questions