2014-05-17 3 views
0

사용자 지정 목록이 있고 각 행에 라디오 그룹이 아닌 이미지, 텍스트보기 및 라디오 버튼이 있습니다. 하나의 라디오 버튼 만 선택합니다. 선택한 라디오 버튼과 같은 행에있는 이미지를 가져오고 싶습니다. 그럼이 이미지로 배경을 설정해주세요. 도와주세요.선택한 라디오 버튼의 같은 행에 이미지를 가져 오는 방법은 무엇입니까?

//rowadapter 
public class rowadapter extends ArrayAdapter<String> { 

private final Activity context; 
int layoutResourceId;  
private final String[] web; 
private final Integer[] imageId; 
int selectedPosition = -1; 
SharedPreferences sharedPref; 

public rowadapter(Activity context,String[] web, Integer[] imageId) { 
    super(context,R.layout.item_listview, web); 
    this.context = context; 
    this.web = web; 
    this.imageId = imageId; 
    sharedPref = context.getSharedPreferences("position",Context.MODE_PRIVATE); 

} 
public View getView(final int position, View row, ViewGroup parent) 
{ 
    LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
    backgroundholder holder = null; 
    View rowView=row; 

     rowView= inflater.inflate(R.layout.item_listview, null, true); 

     TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); 
     final ImageView imageView = (ImageView) rowView.findViewById(R.id.img); 
     txtTitle.setText(web[position]); 
     imageView.setImageResource(imageId[position]); 
     holder = new backgroundholder();  
     holder.radiobutton = (RadioButton)rowView.findViewById(R.id.radiobutton); 
     holder.radiobutton.setChecked(position == selectedPosition); 
     holder.radiobutton.setTag(position); 
     int checkedpos=sharedPref.getInt("position",-1); 
     if(checkedpos==position) 
     { 
      holder.radiobutton.setChecked(true); 
     } 


     holder.radiobutton.setOnClickListener(new View.OnClickListener() {  
     public void onClick(View view) 
       { 
        selectedPosition = (Integer)view.getTag(); 
        RadioButton radio = (RadioButton)view; 
        if(radio.isChecked()) 
        { 
        Editor editor=sharedPref.edit(); 
        editor.putInt("position", selectedPosition); 
        editor.commit(); 
        } 
        Intent i=new Intent(getContext(), Preferences.class); 
        context.startActivity(i); 
        notifyDataSetInvalidated(); 

       } 

      });   

    return rowView; 


} 
static class backgroundholder 
{ 

    RadioButton radiobutton; 
} 

} 
//object class 
import android.widget.RadioButton; 


public class Item { 
String txt; 
Integer drawable; 
RadioButton radiobutton; 
boolean checked; 
public Item(String txt,Integer drawable,RadioButton radiobutton) 
{ 
this.txt=txt; 
this.drawable=drawable; 
this.radiobutton=radiobutton; 
} 

public String gettxt() 
{ 
return txt; 

} 
public Integer getInteger() 
{ 
return drawable; 

} 

public boolean ischecked() 
{ 
return checked; 

} 
public void setchecked(boolean checked) 
{ 
this.checked=checked; 
} 
} 
+0

선형 레이아웃을'horizontal'를 하나에 모두 추가 줄 – Siva

+0

나는 대답을 이해하지 못한다. – user3631823

+0

XML 파일에서 어떤 레이아웃을 사용하고 있습니까? 여기에 xml 파일을 게시하십시오 – Siva

답변

0

해당 행의 텍스트 뷰 값이 무엇인지 알고있는 경우에, 당신은이 방법을 사용할 수 있습니다 :

if (listview.getItemAtPosition(position).toString() == "item 1") { 
imageview.setImageResource(R.drawable.drawable1) 
} else if (listview.getItemAtPosition(position).toString() == "item 2") { 
imageview.setImageResource(R.drawable.drawable2) 
} 

편집 : 는 지금은 다시 한 번 질문을 읽고 변경할 것을 알아 각 목록보기 항목을 클릭하여 배경을 선택하십시오. 그 맞습니까?

에 대해서는 getview가 전혀 필요하지 않습니다.

먼저 listview onItemClick을 구현하고 선택한 행의 위치를 ​​기준으로 배경을 변경해야합니다. 이 같은

뭔가 : 당신의 oncreat에

:

list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long arg3) { 

      if (listview.getItemAtPosition(position).toString() == "item 1") { 
       //put your change background code here 
      } else if (listview.getItemAtPosition(position).toString() == "item 2") { 
       //put your change background code here 
} 
     } 
    }); 

배경을 변경, 당신은이 코드를 사용할 수 있습니다

layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.drawable)); 
+0

예 할 수 있습니다. textview 값을 얻을 ..하지만 난이 부분을 어디에 쓰는지 모르겠다 ?? getView() 메소드의 – user3631823

+0

@ user3631823 'txtTitle.setText (web [position]);'에서 ' –

+0

그것은 작동하지 않습니다 ... 다른 활동에서 식별 된 내 목록과 나는 소유자가 목록보기를 보유하게 ..하지만 그것은 나던 일도하지 않습니다. – user3631823

관련 문제