Объедините радиокнопку и изображения программно

Я хочу показывать изображения с помощью переключателей и показывать это с помощью группы переключателей, поскольку пользователь сможет выбрать вариант, прочитав текст и просмотрев изображение. Как я могу сделать это возможным?

Вот код, с помощью которого создаются переключатели, а также динамический просмотр изображения, но они создаются в группе переключателей, когда я нажимаю переключатель, чтобы выбрать его, отображается ошибка, поскольку представление изображения не может быть передано переключателю, и это делает представление изображения в детстве тоже в радиогруппе, и она не работает, но показывает отлично.

public RadioGroup showNationalCan(RadioGroup rg,Context context,ImageView iv,String voterNA){

    //candidate address  as punjab kpk etc

    if(conn==null){

    }
    try{
        RadioButton rb;
        Statement st=conn.createStatement();
        ResultSet rs=st.executeQuery("select * from AM_NATIONAL where ca_na=N'"+voterNA+"'");
        while (rs.next()) {
            rb=new RadioButton(context);
            rb.setTextColor(Color.BLACK);
            rb.setId(rs.getInt(1));
            rb.setText(rs.getString(2)+"\n"+rs.getString(3)+"\n");

            iv=new ImageView(context);
            byte[] photo=rs.getBytes(4);
            Bitmap bitmap;
            bitmap=BitmapFactory.decodeByteArray(photo, 0, photo.length);
            iv.setImageBitmap(bitmap);
            iv.setEnabled(false);


            rg.addView(iv);
            rg.addView(rb);
        }
        rs.close();
        st.close();

    } catch (SQLException e){
        e.printStackTrace();
    }
    return rg;
}

person Awais    schedule 02.09.2014    source источник
comment
почему мой вопрос отвергнут? мне нужна причина, пожалуйста. есть ли какие-либо проблемы относительно моего вопроса? мне нужно знать. может это мне поможет. потому что это не страх делать это без каких-либо оснований.   -  person Awais    schedule 02.09.2014


Ответы (2)


Вы можете установить изображение с помощью свойства drawableRight. Вы получите более подробную информацию по ссылке.

http://developer.android.com/reference/android/widget/TextView.html#attr_android:drawableRight

<RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:drawableRight="@drawable/ic_launcher"
        android:text="A" >
    </RadioButton>

Вы можете использовать это для динамического добавления переключателя.

RadioGroup rgp= (RadioGroup) findViewById(R.id.radiogroup);
        RadioGroup.LayoutParams rprms;

        for(int i=0;i<3;i++){
              RadioButton radioButton = new RadioButton(this);
              radioButton.setText("new"+i);
              radioButton.setId(i);
              radioButton.setChecked(true);
              radioButton.setCompoundDrawables(drwable_left, drwable_top, drwable_right,                 drwable_bottom);
              rprms= new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
              rgp.addView(radioButton, rprms);
        } 

Вы можете установить растровое изображение в setCompoundDrawables

setCompoundDrawables(new BitmapDrawable(your_left_bitmap), new BitmapDrawable(your_top_bitmap), new BitmapDrawable(your_right_bitmap), new BitmapDrawable(your_bottom_bitmap));

Обновлять :

 Bitmap drawable = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

              radioButton.setCompoundDrawables(new BitmapDrawable(drawable), new BitmapDrawable(drawable), new BitmapDrawable(drawable), new BitmapDrawable(drawable));
person Dhruba Bose    schedule 02.09.2014
comment
но переключатели создаются динамически, а представления изображений также базой данных, которая находится в sql, и я подключаю их через jdbc. я хочу установить их программно - person Awais; 02.09.2014
comment
спасибо за ваш ответ, дорогой @DhrubaBose, это очень важно, потому что никто не отвечает на него. но метод setCompundDrawables используется, когда у нас есть изображения в Android, которые можно рисовать, а не для изображений, которые мы устанавливаем непосредственно из базы данных, как я. и моя проблема заключалась в том, что из-за просмотра изображения, когда мы нажимаем группу радио, чтобы приложение радиокнопки разбилось. - person Awais; 03.09.2014
comment
Вы можете использовать растровое изображение в методе setCompoundDrawables. Проверьте мое обновление. - person Dhruba Bose; 03.09.2014
comment
Проверьте мое обновление. Установите растровое изображение в методе setCompoundDrawables(). - person Dhruba Bose; 03.09.2014
comment
дорогой, я не беру изображение из доступного ресурса, это напрямую из базы данных, поэтому возникает ошибка, и я уже опубликовал ответ, моя работа выполнена, и проблем нет. Я очень благодарен вам за ваше любезное сотрудничество, по вашему мнению, я смог справиться с проблемой. спасибо за помощь дорогая. - person Awais; 03.09.2014

Вот мой собственный ответ, который теперь работает абсолютно идеально. Я ответил здесь, потому что другие могли бы сделать это и установить изображения непосредственно из внешней базы данных, такой как SQL.

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                for(int i=0; i<rg.getChildCount();i++)
                {
                    RadioButton rbtn=(RadioButton)rg.getChildAt(i+1);
                    if(rbtn.getId()==checkedId)
                    {
                        serial=rbtn.getId();
                        flag=true;
                        return;
                    }
                    else
                    {
                        rbtn.setChecked(false);
                    }
                }

            }
        });

Проблема заключалась в том, что радиогруппа имеет представление изображения как дочернее, и это не будет нажиматься как переключатели. Я просто увеличиваю i на i+1, так как каждый раз он будет получать переключатель.

person Awais    schedule 03.09.2014