Tôi đã đạt được điều mà bạn đang hiển thị trong hình ảnh. những gì tôi đã sử dụng là đối thoại tùy chỉnh như bạn đang nghĩ đến sử dụng. tôi đã sử dụng Listview bên trong tệp xml.
Trước hết Hãy xác định khởi tạo danh sách mảng bên dưới.
// Catagory Selection
public static ArrayList<String> acceptpositionwhoesNearMe = new ArrayList<String>();
public static String AcceptCatagotyIDWhoesNearMe = "";
Dưới đây là Bộ luật ShowDialog() tôi đã qua sử dụng.
public void showDialog() {
Log.i(TAG, "Inside Show Dialog");
final Dialog warning = new Dialog(logout_dialogue.this);
warning.requestWindowFeature(Window.FEATURE_NO_TITLE);
warning.setContentView(R.layout.YOUR_XML);
warning.setCancelable(false);
warning.getWindow().setGravity(Gravity.CENTER);
WindowManager mWinMgr;
mWinMgr = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
int displayWidth = mWinMgr.getDefaultDisplay().getWidth();
warning.getWindow().setLayout(displayWidth - 75,
LayoutParams.WRAP_CONTENT);
warning.setOnDismissListener(new OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
Log.i(TAG, "Inside Dialog interface");
// test = true;
warning.dismiss();
}
});
ListView listinterest = (ListView) warning
.findViewById(R.id.list_catagory);
/*
* ArrayList<String> count = new ArrayList<String>(); count.clear();
* count.add("Hotels"); count.add("Restaurants"); count.add("Gardens");
* count.add("Theater");
*/
CatagorySummaryAdapter adapter;
adapter = new CatagorySummaryAdapter(YOUR_ACTIVITY.this,
YOUR_ARRAYLIST_OF_CATAGORY, true);
listinterest.setAdapter(adapter);
Button btnOk = (Button) warning.findViewById(R.id.btn_close);
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String Catagory = "";
int count = HomeActivity.acceptpositionwhoesNearMe.size();
if (count > 0) {
for (int i = 0; i < HomeActivity.acceptpositionwhoesNearMe
.size(); i++) {
int pos = Integer
.parseInt(HomeActivity.acceptpositionwhoesNearMe
.get(i));
if (Catagory.equals("")) {
Catagory = GetUserDetailsJsonParser.CategoryName
.get(pos);
HomeActivity.AcceptCatagotyIDWhoesNearMe = GetUserDetailsJsonParser.CategoryID
.get(pos);
} else {
Catagory = Catagory
+ ","
+ GetUserDetailsJsonParser.CategoryName
.get(pos);
HomeActivity.AcceptCatagotyIDWhoesNearMe = HomeActivity.AcceptCatagotyIDWhoesNearMe
+ ","
+ GetUserDetailsJsonParser.CategoryID
.get(pos);
}
}
Log.i(TAG, "Accept Catagory IDs WhoseNear Me"
+ HomeActivity.AcceptCatagotyIDWhoesNearMe);
GetUserDetailsJsonParser.InterestedIn = HomeActivity.AcceptCatagotyIDWhoesNearMe;
UpdateMap = true;
/*
* startActivity(new Intent(WhosNearMe.this,
* BuildInukshk_4.class));
*/
new GetUsersInRadiusAsyncTask().execute();
warning.dismiss();
} else {
Toast.makeText(WhosNearMe.this,
"Please Select One or More Catagory", 3).show();
}
// test = true;
}
});
warning.show();
}
Đây là logout_dialogue.xml My:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/edittext_back_final"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<com.inukshk.CustomTextViewBold
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="Interested in"
android:textColor="#3C3C3C"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<ListView
android:id="@+id/list_catagory"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:cacheColorHint="#00000000"
android:divider="@android:color/transparent" >
</ListView>
<Button
android:id="@+id/btn_close"
android:layout_width="99dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:background="@drawable/btn_back_final"
android:text="CLOSE"
android:textColor="#ffffff"
android:textSize="16dp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
đây là My CatagorySummaryAdapter.java:
package com.inukshk.adapter;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.inukshk.HomeActivity;
import com.inukshk.R;
import com.inukshk.CreateInukshk.BuildInukshk_3;
import com.inukshk.WhosNearMe.WhosNearMe;
public class CatagorySummaryAdapter extends BaseAdapter {
public Activity context;
String TAG = "CatagorySummaryAdapter";
public LayoutInflater inflater;
public ArrayList<String> Count;
boolean Dialogue;
public CatagorySummaryAdapter(Activity context, ArrayList<String> Count,
boolean Dialogue) {
super();
this.context = context;
this.inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.Count = Count;
this.Dialogue = Dialogue;
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Count.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return Count.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return position;
}
public class ViewHolder {
RelativeLayout lsummary_row;
TextView txtinterestname;
CheckBox chkinterest;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
int pos = position;
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
if (Dialogue) {
convertView = inflater.inflate(
R.layout.listview_summary_dialogue_row, null);
} else {
convertView = inflater.inflate(R.layout.listview_summary_row,
null);
}
holder.txtinterestname = (TextView) convertView
.findViewById(R.id.txtinterestname);
holder.lsummary_row = (RelativeLayout) convertView
.findViewById(R.id.lsummary_row);
holder.chkinterest = (CheckBox) convertView
.findViewById(R.id.chkinterest);
holder.chkinterest.setEnabled(true);
holder.chkinterest.setTag(position);
if (Dialogue) {
for (int i = 0; i < HomeActivity.acceptpositionwhoesNearMe.size(); i++) {
int index = Integer
.parseInt(HomeActivity.acceptpositionwhoesNearMe
.get(i));
// Log.i(TAG, "Inside for Loop of Accept Positions");
if (index == position) {
// Log.i(TAG, "Matched for index" + index);
holder.chkinterest.setChecked(true);
holder.chkinterest
.setButtonDrawable(R.drawable.checkbox_checked);
}
}
} else {
for (int i = 0; i < BuildInukshk_3.acceptposition.size(); i++) {
int index = Integer.parseInt(BuildInukshk_3.acceptposition
.get(i));
// Log.i(TAG, "Inside for Loop of Accept Positions");
if (index == position) {
// Log.i(TAG, "Matched for index" + index);
holder.chkinterest.setChecked(true);
holder.chkinterest
.setButtonDrawable(R.drawable.checkbox_checked);
}
}
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.chkinterest
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
// Log.i(TAG, "ISChecked is " + isChecked);
if (isChecked) {
// Log.i(TAG, "ISChecked is true");
buttonView
.setButtonDrawable(R.drawable.checkbox_checked);
int position = Integer.parseInt(buttonView.getTag()
.toString());
if (Dialogue) {
HomeActivity.acceptpositionwhoesNearMe.add(String
.valueOf(position));
Log.i(TAG, "Accept ID of Dialogue"
+ HomeActivity.acceptpositionwhoesNearMe);
} else {
BuildInukshk_3.acceptposition.add(String
.valueOf(position));
Log.i(TAG, "Accept ID"
+ BuildInukshk_3.acceptposition);
}
} else {
// Log.i(TAG, "ISChecked is false");
buttonView
.setButtonDrawable(R.drawable.checkbox_unchecked);
int position = Integer.parseInt(buttonView.getTag()
.toString());
if (Dialogue) {
if (HomeActivity.acceptpositionwhoesNearMe
.contains(String.valueOf(position))) {
// Log.i(TAG,
// "Inside Already present position");
HomeActivity.acceptpositionwhoesNearMe
.remove(String.valueOf(position));
Log.i(TAG,
"Accept ID Dialogue***"
+ HomeActivity.acceptpositionwhoesNearMe);
}
} else {
if (BuildInukshk_3.acceptposition
.contains(String.valueOf(position))) {
// Log.i(TAG,
// "Inside Already present position");
BuildInukshk_3.acceptposition.remove(String
.valueOf(position));
Log.i(TAG, "Accept ID ***"
+ BuildInukshk_3.acceptposition);
}
}
//
}
}
});
holder.txtinterestname.setText(Count.get(pos));
return convertView;
}
}
cố gắng để đi qua nó có thể giúp bạn.
'Builder' có phương thức' setCustomTitle (View) '. – Luksprog
@Luksprog cần có hộp kiểm. như thể hiện trong hình ảnh. để khi tôi nhấp vào đó, tôi muốn kiểm tra hoặc bỏ chọn tất cả nội dung bên trong nội dung hộp thoại. –
Cũng cung cấp chế độ xem cho phương thức có chứa 'TextView' (tiêu đề thực tế) và hộp kiểm' all' '. – Luksprog