对话框内容不会根据该行更改

时间:2013-09-05 11:48:22

标签: java android dialog

我在所有行中都给出了一个按钮,如果我们点击该按钮对话框必须出现在该按钮对话框中,则必须根据该行显示内容。

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();

                    }
                });

但是我的问题是它不会占用对话框中的相应内容,每当我们点击按钮中的第一项时,它将显示按钮点击的所有行中的内容。对话框内容必须根据行进行更改。

1 个答案:

答案 0 :(得分:1)

您需要为文本视图创建单独的类。像

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

更新您的对话框,如...

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();
}

调用showDialog()方法点击按钮。

 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();

                    }
                });