마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼 클릭한뒤 listview adapter 배경바꾸기.. [closed]

0 추천

      if(여기에 무엇이???){
         holder.ll_bg.setBackgroundColor(Color.RED);
        }else{
        
         if(position%2 == 1){
          holder.ll_bg.setBackgroundResource(R.drawable.search_textbox_03);
         }else{
          holder.ll_bg.setBackgroundResource(R.drawable.search_textbox_02);
         }
         
        }  

안녕하세요 맛잇는 점심들은 하셔사용?

main화면에서 btn_return을 클릭하면

리스트어댑터.java로 가서

리스트 추가될때마다 한줄한줄 red로 보이게 하고싶습니다.

 

현재 저 포지션(if(position%2 == 1){)은 text3 - text2 - text3- text2 이렇게 아주 잘나오는데요!!!

 

제가 main에서 그 버튼을 클릭한뒤

리스트를 추가시키면 red로 나오게 저기 조건문이 뭐가 들어가야할가요

boolean 형으로해야하는데 아직 초짜라 감이 잘 안잡히네요 도와주세용

질문을 종료한 이유: 쎄미님께 감사드립니다. 아직 부족한데 예제해주신걸로 빨리 분석하겟습니다..
하고말테야 (770 포인트) 님이 2014년 1월 8일 질문
하고말테야님이 2014년 1월 16일 closed

1개의 답변

+1 추천

어댑터에 main에서 바로 액세스 할 수 있는 변수를 만들면 되는건데, 아직 해결 못하셨군요...

그리고 과거의 질문은 지우지 마세요. 개발자 커뮤니티의 질문게시판에서 그런 행동은 비매너입니다. 

 

public class MainActivity extends Activity
{
   private MyAdapter _adapter;
   private TextView _textStatus;
   
   
   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      _adapter = new MyAdapter(getApplicationContext());
      ListView list = (ListView) findViewById(R.id.listView1);
      list.setAdapter(_adapter);
      
      _textStatus = (TextView) findViewById(R.id.text_status);
      
      Button btn = (Button) findViewById(R.id.button1);
      btn.setOnClickListener(new View.OnClickListener()
      {
         @Override
         public void onClick(View v)
         {
            onButtonClicked();
         }
      });
   }
   
   // main의 버튼을 클릭했을 때 
   private void onButtonClicked()
   {
      _adapter.isClicked = !_adapter.isClicked;
      _adapter.notifyDataSetChanged();
      
      _textStatus.setText("clicked? : " + _adapter.isClicked + "");
   }
}

간단히 만들어 본 main 액티비티 입니다. 버튼을 클릭하면 어댑터에 있는 변수를 곧바로 변경하고, 리프래시를 합니다. 

 

 

 

public class MyAdapter extends BaseAdapter
{
   private ArrayList<String> _items;
   private LayoutInflater _inflater;
   public boolean isClicked;
   
   
   public MyAdapter(Context $context)
   {
      super();
      _inflater = LayoutInflater.from($context);
      _items = new ArrayList<String>();
      
      for (int i = 0; i < 30; i++)
      {
         _items.add(i + "");
      }
   }
   
   
   @Override
   public int getCount()
   {
      return _items.size();
   }
   
   
   @Override
   public Object getItem(int position)
   {
      return _items.get(position);
   }
   
   
   @Override
   public long getItemId(int position)
   {
      return position;
   }
   
   
   @Override
   public View getView(int position, View convertView, ViewGroup arg2)
   {
      if (convertView == null)
      {
         convertView = _inflater.inflate(R.layout.item_row, null);
      }
      
      TextView textName = (TextView) convertView.findViewById(R.id.text_name);
      textName.setText(_items.get(position));
      
      // main에서 클릭했을 때 이 변수가 바뀌게 되고, 그러면 각 row가 빨간색으로 변합니다.
      if (isClicked)
         convertView.setBackgroundColor(Color.RED);
      else
      {
         if (position % 2 == 1)
            convertView.setBackgroundColor(Color.BLUE);
         else
            convertView.setBackgroundColor(Color.GRAY);
      }
      
      return convertView;
   }
}

평소에는 파란색과 회색이 번갈아가며 나오고, 버튼을 클릭하면 빨간색으로 변합니다. 

쎄미 (162,410 포인트) 님이 2014년 1월 9일 답변
네..아직도 해결을못했습니다..ㅎㅎㅎ
너무감사해요..ㅠㅠ언넝해보고 되면 또 댓글달아야겟네요 ㅠㅠ
이리도쉬운걸 저는...뉴뉴
정말루 감사합니다 ㅠㅠ
삼주째 못하던걸..너무 감사해요 ㅠㅠㅠㅠㅠㅠㅠㅠ
...