어댑터에 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;
}
}
평소에는 파란색과 회색이 번갈아가며 나오고, 버튼을 클릭하면 빨간색으로 변합니다.