主要理解interface的用法。
xDialog.java (代码中间有use case:)
package android.posapp.a;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Dialog;
import android.content.Context;
import android.posapp.R;
import android.posapp.ui.Data;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class xDialog {
public interface OnClickListener
{
public boolean click();
}
private OnClickListener if_okClick;
private OnClickListener if_cancelClick;
public void show_message_info(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) {
show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_info);
}
public void show_message_warrning(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) {
show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_warning);
}
public void show_message_error(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) {
show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_error);
}
public void show_message_ok(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) {
show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_ok);
}
/* use case :
* new xDialog().show_message_error(this, "错误", "设置失败!",null);
* */
private Dialog show_message(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK,int icon_id) {
if_okClick=new_xDialog_OnClickListener_OK;
final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);
int layoutId=R.layout.layout_dialog_msg;
View layout = LayoutInflater.from(context).inflate(layoutId, null);//LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
Data.log2d("[show_message]");
ImageView imageView1 = (ImageView) layout.findViewById(R.id.imageView1);
imageView1.setImageDrawable(context.getResources().getDrawable(icon_id));
TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);
textviewTitle.setText(title);//(this.getResources().getText(R.string.strSelectType));
final TextView textviewContent = (TextView) layout.findViewById(R.id.textviewContent);
textviewContent.setText(message);//(this.getResources().getText(R.string.strSelectType));
Button buttonOK = (Button) layout.findViewById(R.id.buttonOK);
buttonOK.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Data.log2d("[show_message] OK onClick 1");
if (if_okClick==null){
dialog.dismiss();
}else if (if_okClick.click()){
Data.log2d("[show_message] OK onClick 2");
dialog.dismiss();
}
}
});
Button buttonCancel = (Button) layout.findViewById(R.id.buttonCancel);
buttonCancel.setVisibility(View.GONE);
dialog.setContentView(layout);
dialog.show();
return dialog;
/*
new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.NoTitleDialog)).setTitle("错误").setMessage("请输入公司名称(至少4个字符)!")
.setPositiveButton("确认", null).show();
*/
}
/*------------------------------------------------------------*/
public Dialog show_question(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK,OnClickListener new_xDialog_OnClickListener_Cancel) {
if_okClick=new_xDialog_OnClickListener_OK;
if_cancelClick=new_xDialog_OnClickListener_Cancel;
final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);
int layoutId=R.layout.layout_dialog_msg;
View layout = LayoutInflater.from(context).inflate(layoutId, null);//LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
Data.log2d("[show_question]");
ImageView imageView1 = (ImageView) layout.findViewById(R.id.imageView1);
imageView1.setImageDrawable(context.getResources().getDrawable(R.drawable.dialog_icon_question));
TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);
textviewTitle.setText(title);//(this.getResources().getText(R.string.strSelectType));
final TextView textviewContent = (TextView) layout.findViewById(R.id.textviewContent);
textviewContent.setText(message);//(this.getResources().getText(R.string.strSelectType));
Button buttonOK = (Button) layout.findViewById(R.id.buttonOK);
buttonOK.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Data.log2d("[show_question] OK onClick 1");
if (if_okClick==null){
dialog.dismiss();
}
else if (if_okClick.click()){
Data.log2d("[show_question] OK onClick 2");
dialog.dismiss();
}
}
});
Button buttonCancel = (Button) layout.findViewById(R.id.buttonCancel);
buttonCancel.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Data.log2d("[dialog_msg_Ok_show] OK onClick 1");
if (if_cancelClick==null){
dialog.dismiss();
}else if (if_cancelClick.click()){
Data.log2d("[dialog_msg_Ok_show] OK onClick 2");
dialog.dismiss();
}
}
});
dialog.setContentView(layout);
dialog.show();
return dialog;
/*
new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.NoTitleDialog)).setTitle("错误").setMessage("请输入公司名称(至少4个字符)!")
.setPositiveButton("确认", null).show();
*/
}
/*------------------------------------------------------------*/
public interface OnEditOkClick
{
public boolean click(EditText v);
}
private OnEditOkClick if_edit_okClick;
public Dialog show_edit(final Context context,String title,String message,OnEditOkClick cb) {
if_edit_okClick=cb;
final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);
int layoutId=R.layout.layout_dialog_edittext;
View layout = LayoutInflater.from(context).inflate(layoutId, null);//LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);
textviewTitle.setText(title);
final EditText content = (EditText) layout.findViewById(R.id.edittextContent);
content.setText(message);
content.setMaxEms(20);
Button buttonOK = (Button) layout.findViewById(R.id.buttonOK);
buttonOK.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (if_edit_okClick.click(content)){
dialog.dismiss();
}
}
});
Button cancelbutton = (Button) layout.findViewById(R.id.buttonCancel);
cancelbutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.setContentView(layout);
dialog.show();
return dialog;
}
/* use case:
new xDialog().show_edit(this, "please input one name",button_cname.getText().toString(), new xDialog.OnEditOkClick() {
@Override
public boolean click(EditText v) {
return dialog_editor_cname_check(v.getText().toString().trim());
}
});
*/
/*------------------------------------------------------------*/
public interface OnListItemClick
{
public boolean click(ListView v,int position);
}
private OnListItemClick if_list_onItemClick;
public Dialog show_list(final Context context,String title,List<Map<String, Object>> listData, String listKeyString,OnListItemClick ic)
{
//assert( ic ==null);
if_list_onItemClick=ic;
int layoutId=R.layout.layout_dialog_list;
int layoutSubId=R.layout.layout_dialog_list_item;
final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);
View layout = LayoutInflater.from(context).inflate(layoutId, null);
TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);
textviewTitle.setText(title);
final ListView listView1=(ListView) layout.findViewById(R.id.listView1);
SimpleAdapter adapter = new SimpleAdapter(context, listData,
layoutSubId, new String[] {listKeyString},
new int[] { R.id.textView1 });
listView1.setCacheColorHint(0);
listView1.setFadingEdgeLength(0);
listView1.setDividerHeight(0);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long item_line_id) {
if (if_list_onItemClick.click(listView1,position))
{
dialog.dismiss();
}
}
});
Button cancelbutton = (Button) layout.findViewById(R.id.buttonCancel);
cancelbutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.setContentView(layout);
dialog.show();
return dialog;
}
public Dialog show_list(final Context context,String title,String [] listString,OnListItemClick ic)
{
//assert( ic ==null);
List<Map<String, Object>> listData = new ArrayList<Map<String, Object>>();
String key = "a" + "f" + "e" + "i";
if (listString.length == 0) {
} else {
for (int i = 0; i < listString.length; i++) {
Map<String, Object> map = null;
map = new HashMap<String, Object>();
map.put(key, listString[i].toString());
listData.add(map);
}
}
return show_list(context, title, listData, key,ic);
}
/* use case:
* String[] s = new String[] { "item1", "item1", "item1", };
new xDialog().show_list(this, "select...", s, new xDialog.OnListItemClick() {
@Override
public boolean click(ListView v, int position) {
// TODO Auto-generated method stub
if (position == 0) {
n(Data.G_SALE_OUT_BACK);
} else if (position == 1) {
n(Data.G_SALE_IN);
} else if (position == 2) {
export_select();
}
return true;
}
});*/
/* use case:
* new xDialog().show_list(this, "select date", mListDate, "day_date1",new xDialog.OnListItemClick() {
@Override
public boolean click(ListView v, int position) {
// TODO Auto-generated method stub
dialog_select(position);
return true;
}
});
*/
public Dialog show_list_ex(final Context context,String title,List<Map<String, Object>> listData, String listKeyString,OnListItemClick ic) {
//assert( ic ==null);
if_list_onItemClick=ic;
int layoutId=R.layout.layout_dialog_list_ex;
int layoutSubId=R.layout.layout_dialog_list_item;
final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);
View layout = LayoutInflater.from(context).inflate(layoutId, null);
TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);
textviewTitle.setText(title);
ImageButton buttonCancel = (ImageButton) layout.findViewById(R.id.buttonCancel);
buttonCancel.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
final ListView listView1=(ListView) layout.findViewById(R.id.listView1);
SimpleAdapter adapter = new SimpleAdapter(context, listData,
layoutSubId, new String[] {listKeyString},
new int[] { R.id.textView1 });
listView1.setCacheColorHint(0);
listView1.setFadingEdgeLength(0);
listView1.setDividerHeight(0);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long item_line_id) {
if (if_list_onItemClick.click(listView1,position))
{
dialog.dismiss();
}
}
});
dialog.setContentView(layout);
dialog.show();
return dialog;
}
public Dialog show_list_ex(final Context context,String title,String [] listString,OnListItemClick ic)
{
List<Map<String, Object>> listData = new ArrayList<Map<String, Object>>();
String key = "a" + "f" + "e" + "i";
if (listString.length == 0) {
} else {
for (int i = 0; i < listString.length; i++) {
Map<String, Object> map = null;
map = new HashMap<String, Object>();
map.put(key, listString[i].toString());
listData.add(map);
}
}
return show_list_ex(context, title, listData, key,ic);
}
}
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/dialog_icon_info" />
<TextView
android:id="@+id/textviewTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/imageView1"
android:text="title"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="vertical" >
<EditText
android:id="@+id/edittextContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/buttonOK"
android:layout_width="91dp"
android:layout_height="wrap_content"
android:background="@drawable/green_btn1_bg"
android:text="@string/strConfirm"
android:textColor="@color/btn_text_color" >
</Button>
<Button
android:id="@+id/buttonCancel"
android:layout_width="91dp"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:background="@drawable/green_btn1_bg"
android:text="@string/strCancel"
android:textColor="@color/btn_text_color" >
</Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
layout_dialog_msg.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/dialog_icon_info" />
<TextView
android:id="@+id/textviewTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/imageView1"
android:text="title"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="vertical" >
<TextView
android:id="@+id/textviewContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Message"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/buttonOK"
android:layout_width="91dp"
android:layout_height="wrap_content"
android:background="@drawable/green_btn1_bg"
android:text="@string/strConfirm"
android:textColor="@color/btn_text_color" >
</Button>
<Button
android:id="@+id/buttonCancel"
android:layout_width="91dp"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:background="@drawable/green_btn1_bg"
android:text="@string/strCancel"
android:textColor="@color/btn_text_color" >
</Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
layout_dialog_list.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/dialog_icon_question" />
<TextView
android:id="@+id/textviewTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/imageView1"
android:text="title"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
</ListView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/buttonCancel"
android:layout_width="91dp"
android:layout_height="wrap_content"
android:background="@drawable/green_btn1_bg"
android:text="@string/strCancel"
android:textColor="@color/btn_text_color" >
</Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
layout_dialog_list_ex.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/dialog_icon_question" />
<TextView
android:id="@+id/textviewTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/imageView1"
android:text="title"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageButton
android:id="@+id/buttonCancel"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:background="@drawable/green_btn1_bg"
android:src="@android:drawable/ic_delete" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
</ListView>
</LinearLayout>
<!--
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/buttonCancel"
android:layout_width="91dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_btn"
android:text="@string/strCancel"
android:textColor="@color/btn_text_color" >
</Button>
</LinearLayout>
-->
</LinearLayout>
</LinearLayout>
layout_dialog_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_list_item"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:text="TextView" />
</LinearLayout>
---
use case:
private void case1() {
String[] s = new String[] { "AAAAA", "FFF", "789", };
new xDialog().show_list(this, "select.....", s, new xDialog.OnListItemClick() {
@Override
public boolean click(ListView v, int position) {
// TODO Auto-generated method stub
if (position == 0) {
n(Data.G_SALE_OUT_BACK);
} else if (position == 1) {
n(Data.G_SALE_IN);
} else if (position == 2) {
export_select();
}
return true;
}
});
}
private void case2() { new xDialog().show_message_ok(this,"succed.","hello",null); }
private void case3(){
new xDialog().show_edit(this, "input ...","xxx", new xDialog.OnEditOkClick() {
@Override
public boolean click(EditText v) {
return check_string_is_ok(v.getText().toString().trim());
}
});
}
}