简体   繁体   中英

Dialog box content doesnot change according to that row

I am giving one button in all the row,if we click that button dialog box has to appear in that one it has to display the content according to the row.

public void bindView(View view, Context context, final Cursor cursor){
                int row_id = cursor.getColumnIndex("_id");  //Your row id (might need to replace)
                TextView tv = (TextView) view.findViewById(R.id.text2);
                final TextView tv1 = (TextView) view.findViewById(R.id.text1);
                TextView tv2 = (TextView) view.findViewById(R.id.date);
                CheckBox cb = (CheckBox) view.findViewById(R.id.checkbox);
                int col1 = cursor.getColumnIndex("expname");
                final String expname = cursor.getString(col1 );
                int col2 = cursor.getColumnIndex("expcontent");
                final String expcontent = cursor.getString(col2 );
                int col3 = cursor.getColumnIndex("expdate");
                final String expdate = cursor.getString(col3);
                cb.setTag(cursor.getPosition());
                cb.setChecked(mCheckStates.get(cursor.getPosition(), false));
                cb.setOnCheckedChangeListener(this);
              //  TextView tv2 = (TextView) view.findViewById(R.id.text3);
                //cursor.getColumnName(1)
                tv.setText( expname);
                tv1.setText( expcontent);
               tv2.setText(expdate);
                //tv2.setText( ""+cursor.getColumnIndex(GinfyDbAdapter.CATEGORY_COLUMN_COUNT));
             //   String[] from = new String[]{GinfyDbAdapter.CATEGORY_COLUMN_TITLE, GinfyDbAdapter.CATEGORY_COLUMN_CONTENT, GinfyDbAdapter.CATEGORY_COLUMN_COUNT}
                ImageButton button = (ImageButton) view.findViewById(R.id.sms);
                button.setOnClickListener(new OnClickListener(){
                    @Override
                    public void onClick(View v){
                        StringBuffer sb2 = new StringBuffer();
                    sb2.append("Title:");
                        sb2.append(Html.fromHtml(expname));
                        sb2.append(",Content:");
                        sb2.append(Html.fromHtml(expcontent));
                        sb2.append("\n");
                        String strContactList1 = (sb2.toString().trim());
                        sendsmsdata(strContactList1);
                    }
                });

                ImageButton button1 = (ImageButton) view.findViewById(R.id.mail);
                button1.setOnClickListener(new OnClickListener(){
                    @Override
                    public void onClick(View v){
                        StringBuffer sb3 = new StringBuffer();
                    sb3.append("Title:");
                        sb3.append(Html.fromHtml(expname));
                        sb3.append(",Content:");
                        sb3.append(Html.fromHtml(expcontent));
                        sb3.append("\n");
                        String strContactList2 = (sb3.toString().trim());
                        sendmaildata(strContactList2);
                    }
                });

                ImageButton button2 = (ImageButton) view.findViewById(R.id.btnaudioprayer);
                button2.setOnClickListener(new OnClickListener(){
                    @Override
                    public void onClick(View v){
                        //ADD STUFF HERE you know which row is clicked. and which button
                        typed = expcontent;
                        speakOut();
                    }
                });


                ImageButton button3 = (ImageButton) view.findViewById(R.id.bBlame);
                button3.setOnClickListener(new OnClickListener(){
                    @Override
                    public void onClick(View v){
                        //ADD STUFF HERE you know which row is clicked. and which button
                        dialog.show();

                    }
                });

                dialog=new Dialog(ExperiencesActivity.this);
                dialog.setContentView(R.layout.exp1);
                dialog.setCancelable(true);
                dialog.setTitle("My Experiences");

                textview1 = (TextView)dialog.findViewById(R.id.tv11);



                textview1.setText("Title:" + expname);
                textview2 = (TextView)dialog.findViewById(R.id.tv22);
                textview2.setText("Content:" + expcontent);
                Button button23=(Button)dialog.findViewById(R.id.btnSubmit);
                button23.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        dialog.dismiss();

                    }
                });

But here my problem is it will not take the respective content in dialog box,whenever we click the first item in an button,it will shows the content in all the row of button click. Dialog box content has to change according to the row.

You need to create saperate classe for your textviews. Like

   private class ViewHolder {
            TextView textview1;
            TextView textview2;
             Button button23;
        }

Update your dialog like...

public void showMyDialog(){

dialog=new Dialog(ExperiencesActivity.this);
ViewHolder viewholder;
                dialog.setContentView(R.layout.exp1);
                dialog.setCancelable(true);
                dialog.setTitle("My Experiences");

                ViewHolder.textview1 = (TextView)dialog.findViewById(R.id.tv11);
                ViewHolder.textview1.setText("Title:" + expname);
                ViewHolder.textview2 = (TextView)dialog.findViewById(R.id.tv22);
                ViewHolder.textview2.setText("Content:" + expcontent);
                ViewHolder.button23=(Button)dialog.findViewById(R.id.btnSubmit);
               ViewHolder.button23.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        dialog.dismiss();

                    }
                });
 dialog.show();
}

And call showMyDialog() method onclick of button.

 ImageButton button3 = (ImageButton) view.findViewById(R.id.bBlame);
                button3.setOnClickListener(new OnClickListener(){
                    @Override
                    public void onClick(View v){
                        //ADD STUFF HERE you know which row is clicked. and which button
                        showMyDialog();

                    }
                });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM