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

리스트뷰 질문있습니다.

0 추천

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에 붙이고 싶습니다.
 
많은 도움이 필요합니다.
 
 
고소오로 (120 포인트) 님이 2014년 8월 26일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...