프로그래밍 방식으로 선형 레이아웃을 만들었습니다. 흰색 배경을 가진 여러 행이 만들어집니다. 이제 행을 클릭하면 해당 행의 이미지 뷰 아이콘 만 변경되고 (녹색이어야 함) 다른 행의 이미지 뷰 배경은 흰색으로 변경되어야합니다. 안드로이드에서 linearlayout에 대한 notifyDataSetChanged의 위치가 있습니까? 아래 코드는 내 코드입니다.안드로이드에서 linearlayout 자식 뷰를 프로그래밍 방식으로 업데이트하는 방법은 무엇입니까?
for (int i = 0; i <= obj_tribe_info.al_ethnicity_secondary.size(); i++) {
final int position = i;
al_eth_bool.add(false);
final LinearLayout ll_values = new LinearLayout(_activity);
ll_values.setOrientation(LinearLayout.HORIZONTAL);
ll_values.setGravity(Gravity.CENTER_VERTICAL);
LayoutParams LLParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
ll_values.setLayoutParams(LLParams);
ll_values.setBackgroundResource(R.drawable.my_tribe_box_top);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(50, 0, 0, 0);
final ImageView iv_icon = new ImageView(_activity);
if (al_eth_bool.get(position)) {
iv_icon.setBackgroundResource(R.drawable.notify_onn);
} else {
iv_icon.setBackgroundResource(R.drawable.notify_off);
}
iv_icon.setLayoutParams(layoutParams);
ll_values.addView(iv_icon);
TextView tv_value = new TextView(_activity);
tv_value.setTextColor(_activity.getResources().getColor(
R.color.black));
tv_value.setLayoutParams(layoutParams);
if (i == 0) {
tv_value.setText(obj_tribe_info.str_ethnicity_primary);
} else {
tv_value.setText(obj_tribe_info.al_ethnicity_secondary
.get(i - 1).str_ethnicity_secondary);
}
ll_values.addView(tv_value);
ll_ethnicity.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
ll_ethnicity.addView(ll_values);
}
});
ll_values.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (al_eth_bool.get(position)) {
iv_icon.setBackgroundResource(R.drawable.notify_off);
al_eth_bool.set(position, false);
} else {
iv_icon.setBackgroundResource(R.drawable.notify_onn);
al_eth_bool.set(position, true);
}
}
});
}
getChildAt (0)에서 오류가 발생했습니다. ImageView에서 iv = (ImageView) ll_ethnicity.getChildAt (i) .getChildAt (0); – rahul
예, 저의 예는 매우 기초적이었습니다. ll_ethnicity.getChildAt (i)를 ViewGroup 또는 LinearLayout으로 체크/캐스트해야합니다. 내 게시물을 편집합니다 – JimmyVanBraun
내 시간을 저장 :) – rahul