게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
다이어로그와 리스트뷰를 합쳐서 사용하고자 합니다.
게시물ID : programmer_17779짧은주소 복사하기
작성자 : kotran
추천 : 0
조회수 : 352회
댓글수 : 2개
등록시간 : 2016/06/29 18:49:21
다이얼로그에 리스트는 원하는데로  나오긴 합니다만...
다이얼로그에서 제목을 설정해줘도 적용이 안됩니다.
일단 전체적인 로직은 아래와 같구요.


버튼을 클릭하면 다이얼로그가 나오는 겁니다. 
@Override
public void onClick(View v) {
// 뷰 호출
view = activity.getLayoutInflater().inflate(R.layout.listview, null);
// 해당 뷰에 리스트뷰 호출
listview = (ListView)view.findViewById(R.id.listview);
// 리스트뷰에 어뎁터 설정
listview.setAdapter(listviewadapter);

// 다이얼로그 생성
Dialog listViewDialog=new Dialog(activity);
// 리스트뷰 설정된 레이아웃
listViewDialog.setContentView(view);
listViewDialog.setTitle("aaaaaaaaaaaaaaa");
//WindowManager.LayoutParams params=listViewDialog.getWindow().getAttributes();
///params.width= LinearLayout.LayoutParams.WRAP_CONTENT;
//params.height= LinearLayout.LayoutParams.WRAP_CONTENT*2;

// 다이얼로그 보기
listViewDialog.show();
}


그리고 어댑터는 클래스가 아래와같습니다.

public class ListViewAdapter extends BaseAdapter {

private ArrayList<String> list;
private Activity activity;

// 생성할 클래스
ListViewAdapter(Activity activity){
Log.e("main" ,"리스트뷰 생성자");
this.activity = activity;
list = new ArrayList<String>();
}

// 리스트에 값을 추가할 메소드
public void setName(String name)
{
list.add(name);
}
@Override
public int getCount() {
// 리스트뷰 갯수 리턴
return list.size();
}

@Override
public Object getItem(int position) {
// 리스트 값 리턴
return list.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListViewHolder holder = null;
final int pos = position;
TextView name;
Log.e("main", "Listview getView");

// 최초 뷰 생성
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) activity.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = inflater.inflate(R.layout.list_row, parent, false);
name = (TextView) convertView.findViewById(R.id.name_text);

holder = new ListViewHolder();
holder.name = name;

// list values save
convertView.setTag(holder);
// 텍스트 보이기
name.setVisibility(View.VISIBLE);
}
else
{
// list values get
holder = (ListViewHolder) convertView.getTag();
name = holder.name;
}

// 리스트 이름 보이기
name.setText(list.get(pos));

// 리스트 아이템을 터치 했을 때 이벤트 발생
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity.getApplicationContext(), "선택한 이름:" + list.get(pos), Toast.LENGTH_SHORT).show();
}
});

// 리스트 아이템을 길게 터치 했을 떄 이벤트 발생
convertView.setOnLongClickListener(new View.OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
Toast.makeText(activity.getApplicationContext(), list.get(pos) + " 삭제합니다.", Toast.LENGTH_SHORT).show();
// list choice remove
list.remove(pos);
// listview update
MainActivity.listview.clearChoices();
MainActivity.listviewadapter.notifyDataSetChanged();
return false;
}
});

return convertView;
}


// list values class
private class ListViewHolder {
TextView name;
}

}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호