커스텀 리스트뷰를 만들어 리스트모양을 만들어놨습니다.
리스트를 누르면 적용해놓은 이미지가 변화되게 해야합니다.
public class MainActivity extends AppCompatActivity {
ArrayList<MyData> data;
MyAdapter adapter;
String strDate;
String str;
TextView dat_close;
RelativeLayout dat_open;
Random mRand;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRand = new Random();
//#1. 데이터만들기...
data = new ArrayList<MyData>();
Button savebtn = (Button) findViewById(R.id.gil_dat_save2);
final EditText edt = (EditText) findViewById(R.id.gil_dat_write2);
if (savebtn != null) {
savebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//날짜형식
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd aa h:mm", java.util.Locale.getDefault());
Date date = new Date();
strDate = dateFormat.format(date);
str = edt.getText().toString();
if (str.length() != 0) {
ImageView img = (ImageView)findViewById(R.id.gil_dat_ink);
data.add(new MyData(str, strDate, img));
adapter.notifyDataSetChanged();
edt.setText("");
} else {
Toast.makeText(MainActivity.this, "빈 댓글은 싫어요:(", Toast.LENGTH_LONG).show();
}
}
});
}
adapter = new MyAdapter(this, R.layout.gil_dat_list, data);
//#3. 연결하기(리스트뷰, 어댑터)
final ListView list = (ListView) findViewById(R.id.gil_dat_list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int nResult = getRandom(7, 1);
ImageView img = (ImageView) findViewById(R.id.gil_dat_ink);
String resName = "@drawable/ink" + nResult;
int resID = getResources().getIdentifier(resName, "drawable", "com.example.user.dat_test");
img.setBackgroundResource(resID);
//str, strData의 내용도 함께 바뀜
data.set(position, new MyData(str, strDate, img));
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "좋아요!", Toast.LENGTH_SHORT).show();
}
});
}
class MyData {
MyData(String mainText, String subText, ImageView imageRes) {
mMainText = mainText;
mSubText = subText;
mImageRes = imageRes;
}
String mMainText;
String mSubText;
ImageView mImageRes;
}
class MyAdapter extends BaseAdapter {
Context mContext;
ImageView mLayoutRes;
ArrayList<MyData> mData;
//R은 int타입이므로 int layoutRes
MyAdapter(Context context, ImageView layoutRes, ArrayList<MyData> data) {
mContext = context;
mLayoutRes = layoutRes;
mData = data;
}
@Override
public int getCount() {
return mData.size(); //data4개 -> 4개생성
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
//size 4개 -> 4번호출 0~4
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout rlayout;
if (convertView == null) {
rlayout =
(RelativeLayout) View.inflate(mContext, R.layout.gil_dat_list, null);
} else {
rlayout = (RelativeLayout) convertView;
}
TextView mainText = (TextView) rlayout.findViewById(R.id.gil_dat_text);
TextView subText = (TextView) rlayout.findViewById(R.id.gil_dat_date);
ImageView image = (ImageView) rlayout.findViewById(R.id.gil_dat_ink);
mainText.setText(mData.get(position).mMainText);
subText.setText(mData.get(position).mSubText);
image.setImageResource(mData.get(position).mImageRes);
return rlayout;
}
}
public int getRandom(int max, int offset) {
int nResult = mRand.nextInt(max) + offset;
return nResult;
}
}
이미지값을 저장해야하는데 image.setImageResource(mData.get(position).mImageRes);
setImageResource 는 int값만 저장할 수 있어서...
어떻게 해야할지 감이 안잡힙니다.... 힌트 좀 주세여...