public class IconTextView extends LinearLayout {
private ImageView mIcon;
/**
* TextView 01
*/
private TextView mText01;
/**
* TextView 02
*/
private TextView mText02;
private TextView mText03;
public IconTextView(Context context, IconTextItem aItem) {
super(context);
// Layout Inflation
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.teamlist, this, true);
// Set Icon
mIcon = (ImageView) findViewById(R.id.iconItem);
mIcon.setImageDrawable(aItem.getIcon());
// Set Text 01
mText01 = (TextView) findViewById(R.id.dataItem1);
mText01.setText(aItem.getData(0));
// Set Text 02
mText02 = (TextView) findViewById(R.id.dataItem2);
mText02.setText(aItem.getData(1));
//Set Text 03
mText03 = (TextView)findViewById(R.id.dataItem3);
mText03.setText(aItem.getData(2));
}
public void setIcon(Drawable icon) {
mIcon.setImageDrawable(icon);
}
public void setText(int index, String data) {
if (index == 0) {
mText01.setText(data);
} else if (index == 1) {
mText02.setText(data);
} else if (index == 2) {
mText03.setText(data);}else {
throw new IllegalArgumentException();
}
}
}
public class JoinDataView extends ListView {
private JoinTeamAdapter adapter;
private OnDataSelectionListener selectionListener;
public JoinDataView(Context context) {
super(context);
init();
}
public JoinDataView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
setOnItemClickListener(new OnItemClickAdapter());
}
public void setAdapter(BaseAdapter adapter) {
super.setAdapter(adapter);
}
public BaseAdapter getAdapter() {
return (BaseAdapter) super.getAdapter();
}
public void setOnDataSelectionListener(OnDataSelectionListener listener) {
this.selectionListener = listener;
}
public OnDataSelectionListener getOnDataSelectionListener() {
return selectionListener;
}
class OnItemClickAdapter implements OnItemClickListener {
public OnItemClickAdapter() {
}
public void onItemClick(AdapterView parent, View v, int position,
long id) {
if (selectionListener == null) {
return;
}
selectionListener.onDataSelected(parent, v, position, id);
}
}
}
public class JoinTeamAdapter extends BaseAdapter {
private Context mContext;
private List<IconTextItem> mItems = new ArrayList<IconTextItem>();
public JoinTeamAdapter(Context context) {
mContext = context;
}
public void addItem(IconTextItem it) {
mItems.add(it);
}
public void setListItems(List<IconTextItem> lit) {
mItems = lit;
}
public int getCount() {
return mItems.size();
}
public Object getItem(int position) {
return mItems.get(position);
}
public boolean areAllItemsSelectable() {
return false;
}
public boolean isSelectable(int position) {
try {
return mItems.get(position).isSelectable();
} catch (IndexOutOfBoundsException ex) {
return false;
}
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
IconTextView itemView;
if (convertView == null) {
itemView = new IconTextView(mContext, mItems.get(position));
} else {
itemView = (IconTextView) convertView;
itemView.setIcon(mItems.get(position).getIcon());
itemView.setText(0, mItems.get(position).getData(0));
itemView.setText(1, mItems.get(position).getData(1));
}
return itemView;
}
}
public class JoinTeamActivity extends Activity {
private JoinTeamAdapter adapter;
private OnDataSelectionListener selectionListener;
JoinDataView list;
// ListView list;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar abar = getActionBar();
abar.show();
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setDisplayHomeAsUpEnabled(true);
/*
* ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
* ViewGroup.LayoutParams.MATCH_PARENT,
* ViewGroup.LayoutParams.MATCH_PARENT); // ListView list = //
* (ListView) // findViewById(R.id.list_view);
*/
list = new JoinDataView(this);
adapter = new JoinTeamAdapter(this);
list.setAdapter(adapter);
Resources res = getResources();
adapter.addItem(new IconTextItem(res.getDrawable(R.drawable.icon05),
"추억의 테트리스", "30,000 다운로드", "대기중"));
// 리스트 뷰 클릭시
list.setOnDataSelectionListener(new OnDataSelectionListener() {
public void onDataSelected(AdapterView parent, View v,
int position, long id) {
IconTextItem curItem = (IconTextItem) adapter.getItem(position);
String[] curData = curItem.getData();
// 신청할때 다이얼그램
if (curData[2].equals("대기중") == true) {
final AlertDialog.Builder builder = new AlertDialog.Builder(
JoinTeamActivity.this);
builder.setTitle("확인");
builder.setMessage("신청하시려는 팀이 " + curData[0] + "(이)가 맞습니까?");
String text1 = "예 맞습니다.";
builder.setCancelable(true);
builder.setPositiveButton(text1,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// finish();
}
});
builder.setNegativeButton("취소",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// finish();
}
});
builder.show();
}
// 초대받은 목록일때
else if (curData[2].equals("초대 중")) {
final AlertDialog.Builder builder = new AlertDialog.Builder(
JoinTeamActivity.this);
builder.setTitle("확인");
String text1 = "예 맞습니다.";
builder.setMessage("신청하시려는 팀이 " + curData[0] + "(이)가 맞습니까?");
builder.setCancelable(true);
builder.setPositiveButton(text1,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// finish();
}
});
builder.setNegativeButton("취소",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// finish();
}
});
builder.show();
} else if (curData.equals("신청 중")) {
new AlertDialog.Builder(JoinTeamActivity.this)
.setTitle("경고")
.setMessage("이미 신청하셨습니다.")
.setNeutralButton("확인",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
}
}).show();
}
}
});
setContentView(R.layout.activity_join);
}
}
icontextitem - 한 아이템에 보여줄 데이터를 담고 있습니다.
icnotextview- 어뎁터에서 겟뷰함수시 사용됩니다.
joindataview - 리스트뷰를 약간 변형하였습니다. 클릭이벤트를 새로 만들기 위해서
마지막에 있는 자바가 메인 엑티비팅입니다.
원래는 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
setContentView(list, params);
이렇게 직접 뷰그룹을 만들어 사용했는데 좀더 레이아웃을 원하는 모양을 만들고 싶어서 xml에 붙이고 싶습니다.
많은 도움이 필요합니다.